主机1:192.168.17.129
主机2:192.168.17.130
分别在二台主机上安装 MysqL 5.7.16
切换到主机1:
创建热备用户
MysqL -uroot -p123456
MysqL> create user backup identified by '123456';
MysqL> grant all on *.* to backup;
MysqL> create database test default character set utf8 collate utf8_general_ci;
关闭 MysqL 服务 service MysqLd stop;
编辑 my.cnf
vi /etc/my.cnf
server_id=1 --#设置服务器id,为1表示主服务器
log_bin=MysqL-bin --#启动MySQ二进制日志系统
binlog_format=row --#日志类型 row,mixed
expire_logs_days = 7 --//binlog过期清理时间
binlog-do-db=test --#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=MysqL --#不同步MysqL系统数据库
重启 MysqL
MysqL -uroot -p123456
MysqL> show master status; -- 查看主服务器
+----------------------+-----------+------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +----------------------+-----------+-------------------+------------------+ | MysqL-bin.000013 | 1150 | test | MysqL | +-----------------------+----------+------------------+------------------+ 1 row in set (0.00 sec) |
结果表示现在写日志的文件是MysqL-bin.000013,位置是1105,slave端要从这个点开始同步备份test
切换到主机2:
vi /etc/my.cnf #编辑配置文件,在[MysqLd]部分添加下面内容
server_id=2 #配置文件中已经有一行server_id=1,修改其值为2,表示为从数据库
log_bin=MysqL-bin #启动MySQ二进制日志系统
binlog_format=row #日志类型 row,mixed
replicate-do-db=test #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=MysqL #不同步MysqL系统数据库
service MysqLd restart #重启MySQ
注意:MysqL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。
MysqL -u root -p #进入MysqL控制台
stop slave; #停止slave同步进程
change master to master_host='192.168.17.130',master_user='backup',master_password='123456',master_log_file='MysqL-bin.000013',master_log_pos=1150; #执行同步语句
start slave; #开启slave同步进程
SHOW SLAVE STATUS \G; #查看slave同步信息
注意查看:
Slave_IO_Running: Yes
Slave_sql_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!
参阅:http://www.cnblogs.com/sanduzxcvbnm/p/6022149.html
主机直接宕机
1> 在备机上执行STOP SLAVE 和 RESET MASTER
2> 查看show slave status \G;
3> 然后修改应用的连接地址。
正常切换:
1)从服务器检查SHOW PROCESSLIST语句的输出,直到你看到Has read all relaylogwaiting for the slave I/O thread to update it
2)确保从服务器已经处理了日志中的所有语句。
mysql> STOP SLAVE IO_THREAD当从服务器都执行完这些,它们可以被重新配置为一个新的设置。
3)在被提升为主服务器的从服务器上,发出 STOP SLAVE和RESET MASTER和RESET SLAVE操作。
4)然后重启MysqL服务。
5)在备用服务器(新的主服务器)
创建用户
create user backup01 identified by '123456'; -- 不能与主服务上MysqL用户同名
grant all on *.* to backup01;
6) 在主服务器上RESET MASTER。然后CHANGE MASTER TOMASTER_HOST='192.168.17.129',MASTER_USER='backup01',MASTER_PASSWORD='123456',master_log_file='master-bin.000015',master_log_pos=1105;
7)查看状态 show slave status \G;
Show master status \G;
如果还不行再次重启主库,并在备库上执行CHANGE MASTER TOMASTER_HOST='192.168.17.129',MASTER_USER='backup',master_log_file='',master_log_pos=1105;