anyuan2002.com - vwin网

查找: 您的方位主页 > 网络频道 > 阅览资讯:MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

2019-03-29 17:29:09 来历:www.anyuan2002.com 【

装置环境

操作系统 :CentOS 6.5 
数据库版别:MySQL 5.6.27
主机A192.168.1.1 (Master)
主机B:192.168.1.2 (Slave)

这儿做贼心虚的数据库的版别,是因为MySQL在5.6之前和之后的装置方法是不一样的。
本人在进行装备的时分,也遇到了这个坑,这儿提早阐明,期望咱们不要采坑。

注:这儿有一篇CentOS装置MySQL的文章,在这儿引出,进程亲测,期望对咱们有协助:http://blog.csdn.net/xlgen157387/article/details/49964557

根本环境装备

手足,要保证防火墙对3306端口的敞开,(敞开方法,请参阅:[http://blog.csdn.net/xlgen157387/article/details/49964557]),假如后果为了学习数据库的主从装备,可以运用service iptables stop 指令直接封闭防火墙。

然后可以在两台机子之间进行 ping操作,保证两台机器之间可以相同。

Master的装备

在Linux环境下MySQL的装备文件的方位是在 /etc/my.cnf ,在该文件下指定Master的装备如下:

log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=ufind_db 

这儿的server-id用于标识仅有的数据库,这儿设置为2,在设置从库的时分就需求设置为其他值。

binlog-ignore-db:表明同步的时分ignore的数据库
binlog-do-db:指定需求同步的数据库

完好装备截图如下:

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

1、然后重启mysql:service mysqld restart

2、进入mysql:[root@VM_221_4_centos ~]# mysql -u root -p 回车,输入mysql暗码进入。

3、 赋予从库权限帐号,答应用户在主库上读取日志,赋予192.168.1.2也便是Slave机器有File权限,只赋予Slave机器有File权限还不可,还要给它REPLICATION SLAVE的权限才可以。

在Master数据库指令行中输入:

 >GRANT FILE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';

 >GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';
>FLUSH PRIVILEGES

这儿运用的仍是 root 用户作为同步的时分运用到的用户,可以自己设定。

4、重启mysql,登录mysql,显现主库信息

mysql> show master status;
mysql> show master status;
+------------------+----------+--------------+----------------------------------+-------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+------------------+----------+--------------+----------------------------------+-------------------+
| mysql-bin.000004 |  28125 | ufind_db   | information_schema,cluster,mysql |          |
+------------------+----------+--------------+----------------------------------+-------------------+
1 row in set (0.00 sec)

mysql> 

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

这儿的 File 、Position 是在装备Salve的时分要运用到的,Binlog_Do_DB表明要同步的数据库,Binlog_Ignore_DB 表明Ignore的数据库,这些都是在装备的时分进行指定的。

别的:假如履行这个进程一直为Empty set(0.00 sec),那阐明前面的my.cnf没装备对。

Slave的装备

1、从库的装备,手足也是修正装备文件:/etc/my.cnf 如下:

log-bin=mysql-bin
server-id=3
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=ufind_db
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

2、这儿可以看到,在MySQL5.6之后的版别中没有指定:

master-host=192.168.1.1 #Master的主机IP
master-user=root
master-password=mysql password #Master的MySQL暗码

3、这也是在网上许多查找的装备进程,他们也都指定了数据库的版别,可是并没有说出来新版别的装备这种方法是不适用的。

4、假如,你在MySQL5.6和之后的版别中装备从库的时分,设置到了上边的内容,即指定了master-host、master-user等信息的话,重启MySQL的时分就回报错,过错信息如下:

[root@VM_128_194_centos bin]# service mysqld restart
Shutting down MySQL... SUCCESS! 
Starting MySQL... ERROR! The server quit without updating PID file (/data/mysqldb/VM_128_194_centos.pid).
[root@VM_128_194_centos bin]# 

此刻,检查数据库的报错信息(数据库的目录, /data/mysqldb/VM_128_194_centos.err ),可以看到:

2016-05-06 13:12:04 13345 [Note] InnoDB: Waiting for purge to start
2016-05-06 13:12:04 13345 [Note] InnoDB: 5.6.27 started; log sequence number 2850211
2016-05-06 13:12:04 13345 [ERROR] /data/home/server/mysql-5.6.27/bin/mysqld: unknown variable 'master-host=vwin德赢'
2016-05-06 13:12:04 13345 [ERROR] Aborting

可以看出master-host 被检测数是一个不知道的变量,因此会呈现过错。

5、在5.6以及后续版别的装备如下:

修正完/etc/my.cnf 文件之后,重启一下MySQL(service mysqld restart)

进入Slave mysql控制台,履行:

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解


mysql> stop slave; #封闭Slave
mysql> change master to master_host='vwin德赢',master_user='root',master_password='123456',master_log_file='mysql-bin.000004', master_log_pos=28125;

mysql> start slave; #敞开Slave

在这儿指定Master的信息,master_log_file是在装备Master的时分的File选项, master_log_pos是在装备Master的Position 选项,这儿要进行对应。

然后可以经过mysql> show slave status; 检查装备的信息:

mysql> show slave status \G;
*************************** 1. row ***************************
        Slave_IO_State: Waiting for master to send event
         Master_Host: 192.167.1.1
         Master_User: root
         Master_Port: 3306
        Connect_Retry: 60
       Master_Log_File: mysql-bin.000004
     Read_Master_Log_Pos: 28125
        Relay_Log_File: VM_128_194_centos-relay-bin.000004
        Relay_Log_Pos: 26111
    Relay_Master_Log_File: mysql-bin.000004
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
       Replicate_Do_DB: ufind_db
     Replicate_Ignore_DB: mysql
      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: 28125
       Relay_Log_Space: 26296
       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: 2
         Master_UUID: 8ac3066a-9680-11e5-a2ec-5254007529fd
       Master_Info_File: /data/mysqldb/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)

ERROR: 
No query specified

mysql> 

可以看到,满意装备成功。

添加需求同步的从库Slave

由于种种原因,测验的时分运用test库,这儿我依照上述的方法,修正Master的my.cnf的装备文件,新增同步的数据库test,重启MySQL,履行Master的:show master status如下:

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

相应的,要修正Slave从库的信息在my.cnf 添加 replicate-do-db=test,重启Mysql,依据上述的show master status,在Slave从库中履行下边的内容:


>stop slave
>change master to master_host='vwin德赢',master_user='root',master_password='123456',master_log_file='mysql-bin.000005', master_log_pos=120;
>start slave

然后运用:show slave status;

mysql> show slave status\G;
*************************** 1. row ***************************
        Slave_IO_State: Waiting for master to send event
         Master_Host: 192.168.1.1
         Master_User: root
         Master_Port: 3306
        Connect_Retry: 60
       Master_Log_File: mysql-bin.000005
     Read_Master_Log_Pos: 1422
        Relay_Log_File: VM_128_194_centos-relay-bin.000004
        Relay_Log_Pos: 283
    Relay_Master_Log_File: mysql-bin.000005
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
       Replicate_Do_DB: ufind_db,test
     Replicate_Ignore_DB: mysql
      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: 1422
       Relay_Log_Space: 468
       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: 2
         Master_UUID: 8ac3066a-9680-11e5-a2ec-5254007529fd
       Master_Info_File: /data/mysqldb/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)

ERROR: 
No query specified

mysql> 

满意新添加了test。

实在的测验

在主库中新增数据库表,user,调查从库改变如下:

创立数据库的时分:

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

新增数据的时分:

MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

删去Master数据库表的时分:
MySQL5.6 数据库主从(Master/Slave)同步装置与装备详解

装备进程,到此为止,期望可以协助咱们,如有疑问 欢迎留言。

 
 

本文地址:http://www.anyuan2002.com/a/question/99909.html
Tags: 数据库 master mysql5.6
修正:vwin网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部