系统环境
- MySQL Ver 8.0.11 for Linux on x86_64 (Source distribution)
- CentOS Linux release 7.5.1804 (Core)
查看 CentOS 版本命令: cat /etc/RedHat-release
安装 MySQL
二种方式
分别在二台 VPS 中安装 MySQL
lnmp 包, PHP 开发可以选择此方式
yum 源, 教程见:
MySQL 数据文件目录: VIM /usr/local/MySQL/var/
MySQL 配置文件目录: VIM /etc/my.cnf
配置 MySQL
修改配置文件: VIM /etc/my.cnf
master 配置
- log-bin=MySQL-bin
- binlog_format=mixed
- server-id = 1
- binlog_expire_logs_seconds = 864000
- early-plugin-load = ""
- binlog-ignore-db=MySQL
- binlog-ignore-db=information_schema
- binlog-ignore-db=performance_schema
- binlog-ignore-db=sys
slave 配置
server-id=2
binlog-format 是 binlog 的格式, 有三种格式
statement: 基于 sql 的复制, 每修改一条 sql 语句就会记录到 binlog 中, 优点: 不需要记录每条 sql 导致的数据变化, 减少了 binlog 日志量, 缺点: 某些情况下回导致主从不一致 (sleep() 函数, last_insert_id()等)
row: 基于行的复制, 记录数据修改内容, 缺点: 日志量大
mixed: 混合模式, 一般复制使用 statement, 对应 statement 无法复制的使用 row,MySQL 会根据执行的 sql 选择其中一种模式
binlog-ignore-db: 不记录 binlog 的数据库
binlog-do-db: 要记录 binlog 的数据库
启动 MySQL
/etc/init.d/MySQL start
或者 systemctl start mysqld.service
配置 MySQL 容许外网访问
修改 MySQL 用户
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
- FLUSH PRIVILEGES; #刷新权限
关闭防火墙(测试环境使用)
查看防火墙状态: systemctl status firewalld
关闭防火墙: systemctl stop firewalld
开启同步吧
主库
查看 binlog 信息
- MySQL> show master status;
- +------------------+----------+--------------+-------------------------------------------------+-------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
- +------------------+----------+--------------+-------------------------------------------------+-------------------+
- | MySQL-bin.000010 | 1590 | | MySQL,information_schema,performance_schema,sys | |
- +------------------+----------+--------------+-------------------------------------------------+-------------------+
- 1 row in set (0.00 sec)
从库
执行以下命令
- MySQL> CHANGE MASTER TO
- ? ? -> ? ? MASTER_HOST='',
- ? ? -> ? ? MASTER_USER='',
- ? ? -> ? ? MASTER_PASSWORD='',
- ? ? -> ? ? MASTER_LOG_FILE='mysql-bin.000010',
- ? ? -> ? ? MASTER_LOG_POS=1590;
开始同步: start slave
查看 slave:show status slave
test
此时服务以及配置好了, 在主库创建数据库和表进行测试吧
如果从库发现有同步失败的情况, 可以选择忽略
- stop slave;
- set global SQL_SLAVE_SKIP_COUNTER=1;
- show global variables like 'SQL_SLAVE_SKIP_COUNTER';
- start slave;
查看 binlog 内容命令:
show binlog events in 'bin-log.000010'
来源: http://www.bubuko.com/infodetail-3037387.html