欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql 5.6.22 主从同步复制备份

程序员文章站 2022-07-13 08:15:51
...

参考: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

 

相关标签: mysql