mysql 5.6.22 主从同步复制备份

参考:http://369369.blog.51cto.com/319630/790921/

           http://www.2cto.com/database/201312/269034.html

           http://yhv5.com/mysql_master-slave_799.html

1、主从服务器分别作以下操作
  1.1、版本一致,如我用的mysql5.6.22;
  1.2、安装(我们是编译源码安装的)完成后初始化表,并在后台启动mysql;
  1.3、修改root的密码;

2、修改主服务器master:
   #vim /usr/local/mysql/my.cnf
       [mysqld]

       log-bin=mysql-bin            #开启二进制日志

       server_id=1                     #[必须]服务器唯一ID,默认是1,一般取IP最后一段

       binlog-ignore-db             =test            #不记录test库,可以添加多个库则写多行

       binlog-do-db                   =chzzg           #记录chzzg库

       log-slave-updates           =1               #这个参数一定要加上,否则不会给更新的记录些到二进制文件里

       slave-skip-errors             =1062            #这个跳过1062  主键重复错误

       skip-external-locking

       skip-name-resolve

       expire_logs_days              =7               #日志保留7天

       innodb_flush_log_at_trx_commit=1      #这也是Innodb 的默认设置。我们每次事务的结束都会                                                                                   #触发Log Thread 将log buffer 中的数据

       sync_binlog                     =1

       binlog_cache_size           =10M

       binlog_format                   =mixed

3、修改从服务器slave:
   #vim /usr/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=8             //[必须]服务器唯一ID,默认是1,一般取IP最后一段

       binlog-ignore-db              =test

       log-slave-updates             =1

       skip-external-locking

       skip-name-resolve

       expire_logs_days              =7

       innodb_flush_log_at_trx_commit=1

       sync_binlog                   =1

       max_binlog_size                = 10M

       binlog_cache_size              = 5M

       replicate-ignore-db            =test

       binlog_format                  =mixed

   完成配置后重启两台服务器的mysql

4、在主服务器上建立帐户并授权slave:

   命令登陆master机子:

        # mysql -uroot -padmin         //用户名命名登陆后就可以了。

       mysql>  GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup123'; //一般不用root用户,如果指定了  多台从机,则可以用 %,只有一台从机就指定 IP替换%。“%”表示所有客户端都可能连;

     mysql> show master status;     //登陆master机子的mysql查看master状态;并记录

 +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      120 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

5、配置从服务器Slave:

   登陆slave机的mysql:命令同上:mysql -u用户名  -p密码

    mysql> change master to

        master_host='172.168.32.6',              //此处都是内网地址。

master_user='backup',                    //master授权的用户名

master_password='backup123',             //master授权的用户密码

master_port=3306,

master_log_file='mysql-bin.000004',       //master的文件名称File

master_log_pos=120;                       //master的文件位置Positon

完成后。

Mysql>start slave;    //启动从服务器复制功能

6、检查从服务器复制功能状态:

mysql> show slave status\G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 172.168.32.6

                  Master_User: backup

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000004

          Read_Master_Log_Pos: 120

               Relay_Log_File: i-588F1134-relay-bin.000002

                Relay_Log_Pos: 894

        Relay_Master_Log_File: mysql-bin.000004

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB: 

          Replicate_Ignore_DB: test

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 731

              Relay_Log_Space: 1072

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error: 

  Replicate_Ignore_Server_Ids: 

             Master_Server_Id: 1

                  Master_UUID: 29296c3f-849a-11e4-a8de-d00de79d4b11

             Master_Info_File: /usr/local/mysql/data/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

           Master_Retry_Count: 86400

                  Master_Bind: 

      Last_IO_Error_Timestamp: 

     Last_SQL_Error_Timestamp: 

               Master_SSL_Crl: 

           Master_SSL_Crlpath: 

           Retrieved_Gtid_Set: 

            Executed_Gtid_Set: 

                Auto_Position: 0

1 row in set (0.00 sec)

上边看到: Slave_IO_Running: Yes

           Slave_SQL_Running: Yes      两个表示成功,必须是2个Yes 才是成功,  connecting 或者No都失败!

另外:

如果数据库已经有数据了,则需要将主库的数据导出,并上传到从库服务器上并导入;

主库导出样例:

[root@i-05963843 bin]# ./mysqldump -uroot -p12345 -h127.0.0.1 kyddb > /home/kyddb0914.sql

可以导出来,

也可以用:mysqldump -uroot -p --hex-blob --lock-all-tables -R --triggers --databases mydb --master-data=2 --default-character-set='utf8' --quick > /home/kyddb0914.sql

导入命令:

mysql -uwebsite -pfeixun@0927  --default-character-set=utf8 website < /home/kyddb0914.sql

相关推荐