1. .安装环境
  2. .基本环境配置
  3. .Master的配置
  4. .Slave的配置
  5. .添加需要同步的从库Slave
  6. .真正的测试

安装环境

  1. 1 操作系统 CentOS 6.5
  2. 2 数据库版本:MySQL 5.6.27
  3. 3 主机A192.168.1.1 Master
  4. 4 主机B192.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的配置如下:

  1. 1 log-bin=mysql-bin
  2. 2 server-id=2
  3. 3 binlog-ignore-db=information_schema
  4. 4 binlog-ignore-db=cluster
  5. 5 binlog-ignore-db=mysql
  6. 6 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数据库命令行中输入:

  1. 1 >GRANT FILE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';
  2. 2
  3. 3 >GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'mysql password';
  4. 4 >FLUSH PRIVILEGES

这里使用的仍是 root 用户作为同步的时候使用到的用户,可以自己设定。

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

  1. 1 mysql> show master status;
  1. mysql> show master status;
  2. 2 +------------------+----------+--------------+----------------------------------+-------------------+
  3. 3 | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  4. 4 +------------------+----------+--------------+----------------------------------+-------------------+
  5. 5 | mysql-bin.000004 | 28125 | ufind_db | information_schema,cluster,mysql | |
  6. 6 +------------------+----------+--------------+----------------------------------+-------------------+
  7. 7 1 row in set (0.00 sec)
  8. 8
  9. 9 mysql>

这里的   File 、Position 是在配置Salve的时候要使用到的,Binlog_Do_DB表示要同步的数据库,Binlog_Ignore_DB 表示Ignore的数据库,这些都是在配置的时候进行指定的。

另外:如果执行这个步骤始终为Empty set(0.00 sec),那说明前面的my.cnf没配置对。

Slave的配置

1、从库的配置,首先也是修改配置文件:/etc/my.cnf 如下:

  1. 1 log-bin=mysql-bin
  2. 2 server-id=3
  3. 3 binlog-ignore-db=information_schema
  4. 4 binlog-ignore-db=cluster
  5. 5 binlog-ignore-db=mysql
  6. 6 replicate-do-db=ufind_db
  7. 7 replicate-ignore-db=mysql
  8. 8 log-slave-updates
  9. 9 slave-skip-errors=all
  10. 10 slave-net-timeout=60

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

  1. master-host=192.168.1.1 #Master的主机IP
  2. master-user=root
  3. master-password=mysql password #Master的MySQL密码

3、这也是在网上很多搜索的配置过程,他们也都指定了数据库的版本,但是并没有说出来新版本的配置这种方式是不适用的。

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

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

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

  1. 1 2016-05-06 13:12:04 13345 [Note] InnoDB: Waiting for purge to start
  2. 2 2016-05-06 13:12:04 13345 [Note] InnoDB: 5.6.27 started; log sequence number 2850211
  3. 3 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'
  4. 4 2016-05-06 13:12:04 13345 [ERROR] Aborting

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

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

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

进入Slave mysql控制台,执行:

  1.  
  1. mysql> stop slave; #关闭Slave
  2. mysql> change master to master_host='192.168.1.1',master_user='root',master_password='',master_log_file='mysql-bin.000004', master_log_pos=;
  3.  
  4. mysql> start slave; #开启Slave
  1. 在这里指定Master的信息,master_log_file是在配置Master的时候的File选项, master_log_pos是在配置MasterPosition 选项,这里要进行对应。

然后可以通过mysql> show slave status; 查看配置的信息:

  1. mysql> show slave status \G;
  2. *************************** . row ***************************
  3. Slave_IO_State: Waiting for master to send event
  4. Master_Host: 192.167.1.1
  5. Master_User: root
  6. Master_Port:
  7. Connect_Retry:
  8. Master_Log_File: mysql-bin.
  9. Read_Master_Log_Pos:
  10. Relay_Log_File: VM_128_194_centos-relay-bin.
  11. Relay_Log_Pos:
  12. Relay_Master_Log_File: mysql-bin.
  13. Slave_IO_Running: Yes
  14. Slave_SQL_Running: Yes
  15. Replicate_Do_DB: ufind_db
  16. Replicate_Ignore_DB: mysql
  17. Replicate_Do_Table:
  18. Replicate_Ignore_Table:
  19. Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21. Last_Errno:
  22. Last_Error:
  23. Skip_Counter:
  24. Exec_Master_Log_Pos:
  25. Relay_Log_Space:
  26. Until_Condition: None
  27. Until_Log_File:
  28. Until_Log_Pos:
  29. Master_SSL_Allowed: No
  30. Master_SSL_CA_File:
  31. Master_SSL_CA_Path:
  32. Master_SSL_Cert:
  33. Master_SSL_Cipher:
  34. Master_SSL_Key:
  35. Seconds_Behind_Master:
  36. Master_SSL_Verify_Server_Cert: No
  37. Last_IO_Errno:
  38. Last_IO_Error:
  39. Last_SQL_Errno:
  40. Last_SQL_Error:
  41. Replicate_Ignore_Server_Ids:
  42. Master_Server_Id:
  43. Master_UUID: 8ac3066a--11e5-a2ec-5254007529fd
  44. Master_Info_File: /data/mysqldb/master.info
  45. SQL_Delay:
  46. SQL_Remaining_Delay: NULL
  47. Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
  48. Master_Retry_Count:
  49. Master_Bind:
  50. Last_IO_Error_Timestamp:
  51. Last_SQL_Error_Timestamp:
  52. Master_SSL_Crl:
  53. Master_SSL_Crlpath:
  54. Retrieved_Gtid_Set:
  55. Executed_Gtid_Set:
  56. Auto_Position:
  57. row in set (0.00 sec)
  58.  
  59. ERROR:
  60. No query specified
  61.  
  62. mysql>

可以看到,已经配置成功。

添加需要同步的从库Slave

由于种种原因,测试的时候使用test库,这里我按照上述的方式,修改Master的my.cnf的配置文件,新增同步的数据库test,重启MySQL,执行Master的:show master status如下:

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

  1.  
  1. >stop slave
  2. >change master to master_host='192.168.1.1',master_user='root',master_password='',master_log_file='mysql-bin.000005', master_log_pos=;
  3. >start slav
  1.  

然后使用:show slave status;

  1. mysql> show slave status\G;
  2. *************************** . row ***************************
  3. Slave_IO_State: Waiting for master to send event
  4. Master_Host: 192.168.1.1
  5. Master_User: root
  6. Master_Port:
  7. Connect_Retry:
  8. Master_Log_File: mysql-bin.
  9. Read_Master_Log_Pos:
  10. Relay_Log_File: VM_128_194_centos-relay-bin.
  11. Relay_Log_Pos:
  12. Relay_Master_Log_File: mysql-bin.
  13. Slave_IO_Running: Yes
  14. Slave_SQL_Running: Yes
  15. Replicate_Do_DB: ufind_db,test
  16. Replicate_Ignore_DB: mysql
  17. Replicate_Do_Table:
  18. Replicate_Ignore_Table:
  19. Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21. Last_Errno:
  22. Last_Error:
  23. Skip_Counter:
  24. Exec_Master_Log_Pos:
  25. Relay_Log_Space:
  26. Until_Condition: None
  27. Until_Log_File:
  28. Until_Log_Pos:
  29. Master_SSL_Allowed: No
  30. Master_SSL_CA_File:
  31. Master_SSL_CA_Path:
  32. Master_SSL_Cert:
  33. Master_SSL_Cipher:
  34. Master_SSL_Key:
  35. Seconds_Behind_Master:
  36. Master_SSL_Verify_Server_Cert: No
  37. Last_IO_Errno:
  38. Last_IO_Error:
  39. Last_SQL_Errno:
  40. Last_SQL_Error:
  41. Replicate_Ignore_Server_Ids:
  42. Master_Server_Id:
  43. Master_UUID: 8ac3066a--11e5-a2ec-5254007529fd
  44. Master_Info_File: /data/mysqldb/master.info
  45. SQL_Delay:
  46. SQL_Remaining_Delay: NULL
  47. Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
  48. Master_Retry_Count:
  49. Master_Bind:
  50. Last_IO_Error_Timestamp:
  51. Last_SQL_Error_Timestamp:
  52. Master_SSL_Crl:
  53. Master_SSL_Crlpath:
  54. Retrieved_Gtid_Set:
  55. Executed_Gtid_Set:
  56. Auto_Position:
  57. row in set (0.00 sec)
  58.  
  59. ERROR:
  60. No query specified
  61.  
  62. mysql>

已经新增加了test。

真正的测试

在主库中新增数据库表,user,观察从库变化如下:

创建数据库的时候:

新增数据的时候:

删除Master数据库表的时候:

MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解的更多相关文章

  1. MySQL的Master/Slave群集安装和配置

    本文介绍MySQL的Master/Slave群集安装和配置,版本号安装最新的稳定版GA 5.6.19. 为了支持有限HA.我们用Master/Slave读写简单孤立的集群.有限HA这是当Master不 ...

  2. Linux中Nginx安装与配置详解

    转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...

  3. Tomcat安装及配置详解

    Tomcat安装及配置详解   一,Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Found ...

  4. Nginx安装及配置详解【转】

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  5. [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html

    Nginx安装及配置详解   nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP ...

  6. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  7. nginx在linux上的安装与配置详解(一)

    Nginx的安装与配置详解 (1)nginx简介     nginx概念: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like ...

  8. Linux NFS服务器的安装与配置详解

    一.NFS服务简介 NFS是Network File System(网络文件系统).主要功能是通过网络让不同的服务器之间可以共享文件或者目录.NFS客户端一般是应用服务器(比如web,负载均衡等),可 ...

  9. OpenVPN CentOS7 安装部署配置详解

    一 .概念相关 1.vpn 介绍 vpn 虚拟专用网络,是依靠isp和其他的nsp,在公共网络中建立专用的数据通信网络的技术.在vpn中任意两点之间的链接并没有传统的专网所需的端到端的物理链路,而是利 ...

随机推荐

  1. zookeeper注册中心和客户端

    1.zookeeper和eureka区别 zookeeper向client进行ping操作,如果不通,就删除client节点 eureka自我保护机制是client向注册中心发送心跳包,如果一定时间内 ...

  2. 致 Python 初学者们!

    ​ 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长.在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫.我非常理解你们所面临的处 ...

  3. AUTOSAR-Specification of Watchdog Manager 阅读

    一.开门狗管理有三种机制 1.定周期任务实时监控 2.非定周期任务执行时间监控 3.逻辑监控,执行顺序. 二.受监控的实体和检查点 Watchdog Manager监督软件的执行.监督的逻辑单位是受监 ...

  4. 你知道你对 JSON Web Token 的认识存在误解吗

    1.前言 JSON Web Token (JWT) 其实目前已经广为软件开发者所熟知了,但是 JOSE (Javascript Object Signing and Encryption) 却鲜有人知 ...

  5. 理解Java中的对象,变量和方法

    1.对象的创建和销毁 1.1 对象的创建 这里只介绍创建对象与构造方法的关系 (1).每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程,准确的说,在Java语言中使用new操 ...

  6. 流程控制 if-while-for -语句

    if 语句是用来判断条件的真假,是否成立,如果为ture就执行,为flase则跳过 1.python用缩进表示代码的归属 2.同一缩进的代码,称之为代码块,默认缩进4个      if 语句结构   ...

  7. hibernate 持久化对象 save

    hibernate 持久化对象 save new出来的user对象是游离状态的对象,执行session.save()方法保存后,user对象就变为持久化了,持久化的对象跟数据库表双向绑定的意思, 对象 ...

  8. MRP自动运算设置

    1.执行计划-删除老的调度计划: 2.运算日志-清除冲突: 3.MRP计划运算向导,清除预留: 4.创建MRP凌晨调度任务,名称自己修改: 5.创建完成: 6.设置消息通知:

  9. day40-进程-生产者消费者模型进阶

    #1.队列的数据是安全的,因为队列内置了一把锁,大家都来抢占资源的时候,A在操作数据的时候,B就无法操作该数据. # 下面代码有两个生产者和三个消费者,包子吃完之后,接着放的两个None被marry和 ...

  10. vue实现动态绑定class--多个按钮点击一个有一个

    <template> //v-for循环出来多个按钮,便于获取index         <span v-for="(item,index) in list" : ...