MySQL 的主从复制
环境:
master:192.168.1.160
slave :192.168.1.161
一、备份还原数据
1、使用mysqldump在master备份数据
mysqldump -u root -p test > backup.sql
2、将数据拷贝到slave
scp backup.sql root@192.168.1.161:/tmp
3、在slave还原数据
mysql -u root -p < backup.sql
二、my.cnf文件修改
1、修改主服务器master
#vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=160 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
2、修改从服务器slave
#vi /etc/my.cnf [mysqld] server-id=161 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 replicate-do-db=test //设置白名单过滤
3、重启两台服务器的MySQL
service msyqld restart
三、在主服务器上建立帐户并授权slave
mysql>GRANT REPLICATION SLAVE ON *.* to 'test161'@'192.168.1.161' identified by '123456'; //一般不用root帐号
四、登录主服务器的mysql,查询master的状态
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 3201 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
五、配置从服务器Slave
mysql>change master to master_host='192.168.1.160',master_user='test161',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=884; mysql>start slave; //启动主从复制线程
六、检查从服务器复制功能状态
mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.160 Master_User: test161 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 3201 Relay_Log_File: test161-relay-bin.000002 Relay_Log_Pos: 2637 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)
七、测试主从服务器
1、在test这个库中建表插入一条数据:
2、从服务器Mysql查询
八、监控
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报。

浙公网安备 33010602011771号