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,就表明主从有问题了,发短信警报。

posted @ 2017-12-04 14:31  Gringer  阅读(112)  评论(0)    收藏  举报