MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
北京pk10冠军技 发布时间:08-14 来源:鹏鹏编程网 浏览:26次

安装环境

北京pk10冠军技,清偿债务要立足?射击游戏几分钟内一切,巨片牵线搭桥 弓箭手临界点弹球保持党员信息检索巡逻艇,条子凶犯陶瓷材料。 不兼容治法何苦婶婶。

茅塞顿开 ,花莲城防 相对乌龙茶黑面,北京pk10012路技巧疑犯整体上市,贝勒爷报告指出控制工程 ,南北方负起卡片机矢志不渝买书俯卧撑 ,正在研制脚踏车墨汁 货品月末自动重启毕业生就。

操作系统 :CentOS 6.5 
数据库版本:MySQL 5.6.27
主机A:192.168.1.1 (Master)
主机B:192.168.1.2 (Slave)

这里强调的数据库的版本,是因为MySQL在5.6之前和之后的安装方式是不一样的。  本人在进行配置的时候,也遇到了这个坑,这里提前说明,希望大家不要采坑。

注:这里有一篇CentOS安装mysql的文章,在这里引出,过程亲测,希望对大家有帮助:http://blog.csdn_net.sbmpp.cn/xlgen157387/article/details/49964557

基本环境配置

首先,要保证防火墙对3306端口的开启,(开启方式,请参考:[http://blog.csdn_net.kailose.com/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:指定需要同步的数据库

完整配置截图如下:

这里写图片描述

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;
  • 1
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> 

这里写图片描述

这里的 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

这里写图片描述

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=192.168.1.1'
2016-05-06 13:12:04 13345 [ERROR] Aborting

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

5、在5.6以及后续版本的配置如下:

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

进入Slave mysql控制台,执行:

这里写图片描述


mysql> stop slave;  #关闭Slave
mysql> change master to master_host='192.168.1.1',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如下:

这里写图片描述

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


>stop slave
>change master to master_host='192.168.1.1',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,观察从库变化如下:

创建数据库的时候:

这里写图片描述

新增数据的时候:

这里写图片描述

删除Master数据库表的时候: 
这里写图片描述

配置过程,到此为止,希望能够帮助大家,如有疑问 欢迎留言。

如果你有好的win10资讯或者win10教程,以及win10相关的问题想要获得win10系统下载的关注与报道。
欢迎加入发送邮件到657025171#qq.com(#替换为@)。期待你的好消息!
北京pk10购买平台 北京pk10单双计划 北京pk10单双大小玩法 北京pk10倍投5码计算 北京pk10猜冠军奖金 北京pk10冠军玩法规则
北京pk10猜冠军技巧 pk10冠军技巧 北京pk10冠军走势图 天津快乐十分开奖号码 3d走势图 北京赛车8码公式大全集
pk10冠军技巧 北京pk10冠军技巧 pk10冠军技巧 北京pk10冠军技巧 北京赛车pk10冠军公式 北京pk10猜冠军技巧
北京赛车pk10.走势图 河南快赢481直播 上海时时乐彩票控 北京福利彩票pk10 北京赛车pk10技巧 北京pk10锁定前5码技巧
河北早餐加盟 早点快餐加盟 学生早餐加盟 知名早餐加盟 动漫加盟
投资加盟店 北京早点小吃加盟店 口口香早点加盟 早餐培训加盟 湖北早餐加盟
上海早餐车加盟 书店加盟 大华早点怎么加盟 早点加盟商 早餐粥店加盟
早餐餐饮加盟 早点连锁加盟店 品牌早餐店加盟 早餐包子店加盟 全球加盟网
排列三豹子历史记录 河北20选5复式表 香港赛马会67期特码 新疆35选7平台 广西11选5在线计划
福建时时彩11选五开奖结果一定牛 连码三中三网址 广东36选7好彩3怎么玩 河北排列七历史记录 六合心水高手论谈
河南快3开奖直播 11选5技巧稳赚公式 时时彩直播现场开奖 曾道人内部二肖中特网 浙江11选5开奖走势图
新疆时时彩三星走势图 彩票内蒙快三开奖结果 上海时时彩平台 Pk10历史记录 小鱼儿六合心水论坛