1. 版本
1.1. centos版本
[root@MiWiFi-R3-srv download]# cat /etc/redhat-release
1.2. mysql版本
mysql -V
mysql Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using EditLine wrapper
主机 mysql5.7 192.168.1.111 3306 root/root123
从机1 mysql5.7 192.168.2.222 3306 root/root123
2. 允许mysql远程链接
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'root123' WITH GRANT OPTION;
flush privileges;
3. 配置
3.1.主机配置
3.1.1.配置文件
打开配置文件
在[mysqld]中进行配置:
[mysqld]
server-id=1
log-bin=/var/log/mysql-bin
log-error=/var/log/mysqld.log
binlog-ignore-db=mysql
binlog-do-db=test1,test2
设置目录log目录权限
chown mysql.mysql -R /var/log/
注释:
server-id=1 #主机ID
log-bin="mysql-bin" #二进制日志文件目录及文件名(绝对路径时使用/)
log-error="mysql-error" #错误日志文件目录及文件名(绝对路径时使用/)
binlog-ignore-db=mysql #主从同步时 忽略 的数据库
binlog-do-db=test #指定主从同步时 同步 哪些数据库
3.1.2. 授权从数据库,创建slave用户
在主服务器新建一个用户,给从服务器同步使用
GRANT REPLICATION slave,reload,super ON *.* TO slave@'192.168.2.222' IDENTIFIED BY 'Slave@123';
flush privileges;
即:
3.1.3.查看主计算机状态
show master status;
FIle:指的是当前使用的二进制日志文件
Position:当前位置
每次重启mysql之后或做主从同步前都需要重新查看该位置,保持最新。
3.2.从机配置
3.2.1.配置文件
打开配置文件
在[mysqld]中进行配置(添加):
mysqld]
server-id=2
log-bin=/var/log/mysql-bin
replicate-do-db=test1,test2
relay_log_recovery=1
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误
设置目录log目录权限
chown mysql.mysql -R /var/log/
注解:
server-id=2 #从机ID
log-bin=”mysql-bin” #二进制日志文件目录及文件名(使用/) 相对路径
log-error=”mysql-error” #错误日志文件目录及文件名(使用/)相对路径
replicate-do-db=test #从机同步的数据路,对应主机配置的binlog-do-db=test
3.2.2. 授权master数据库
默认跳过1000个错误;(1000自定义)
set global sql_slave_skip_counter =1000;
CHANGE MASTER TO MASTER_HOST = '192.168.1.111',
MASTER_USER = 'slave',
MASTER_PASSWORD = 'Slave@123',
MASTER_PORT = 3306,
master_log_file='mysql-bin.000049',
master_log_pos=616;
3.2.3.开启主从同步
start slave;
3.2.4. 检查slave工作状态
show slave status \G
确保Slave_IO_Running和Slave_SQL_Running两个线程的运行状态为“Yes”
查看ID命令:
show variables like 'server_id';
如果出现主从id相同冲突的问题:通过全局变量设置的方式进行解决
set global server_id=2