环境:
主服务器:192.168.127.147
从服务器:192.168.127.146
主服务器配置:
1、为从服务创建账号并赋予权限:
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'192.168.127.%' IDENTIFIED BY 'repl';
说明:%是通配符,表示192.168.127.0-192.168.127.255的Server都可以以repl用户登陆主服务器。
2、配置主服务器:
# vi /etc/my.cnf
添加以下内容到[mysqld]节点
server-id=1 #设置服务器id注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
binlog-do-db=osyunweidb #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql #不同步mysql系统数据库
保存并退出
3、重新启动mysqld服务:
systemctl restart mysqld
从服务器配置:
1、修改配置文件
# vi /etc/my.cnf
添加以下内容到[mysqld]节点
server-id=2
2、重新启动mysqld服务:
systemctl restart mysqld
3、配置运行mysql命令
mysql> CHANGE MASTER TO MASTER_HOST='192.168.127.147',
mysql> MASTER_USER='repl',MASTER_PASSWORD='repl',
mysql> MASTER_LOG_FILE='mysql-bin.000001',
msyql> MASTER_LOG_POS=0;
4、查看SLAVE状态:
mysql> SHOW SLAVE STATUS;
如果出现:
waiting for master to send event 没有报错的情况下
执行5。
如果出错误:
Could not find first log file name in binary log index file
解决办法:
从机器停止slave
mysql>STOP SLAVE;
到主服务器登上
记录master的bin的位置,例如:mysql> SHOW MASTER STATUS;
日志为mysqld-bin.000003
刷新日志:mysql> flush logs;
因为刷新日志file的位置会+1,即File变成为:mysqld-bin.000004
马上到从服务器上执行:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.127.147',
mysql> MASTER_USER='repl',MASTER_PASSWORD='repl',
mysql> MASTER_LOG_FILE='mysql-bin.000004',
msyql> MASTER_LOG_POS=0;
查看状态如果没错则执行5.
5、开启SLAVE;
mysql> START SLAVE;
配置完成,在主服务器插入数据,查看从服务同步情况。
从服务器同步如果遇到错误可以执行跳过语句:
mysql> SET GLOBAL sql_slave_skip_counter=1;