Home  >  Article  >  Database  >  rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]

rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]

WBOY
WBOYOriginal
2016-06-07 17:37:50929browse

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)一、mysql主(称master)从(称slave)复制的原理:(1).master将数据改变记录到二进制日志(binarylog


附简要原理图:

221725639.png

spacer.gif

二、mysql主从复制支持的类型:

    (1).基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句.MySQL默认采用基于语句的复制,效率比较高

   (2).基于行的复制:把改变的内容直接复制过去,而不关心到底改变该内容是由哪条语句引发的 . 从mysql5.0开始支持

   (3).混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制.


三、主从配置需要注意的地方:

   (1).主DB server和从DB server数据库的版本一致

   (2).主DB server和从DB server数据库数据一致[ 这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录]

   (3).主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一


四、主从配置的简要步骤:

附简要示意图:

221749365.png

spacer.gif

1.主DB SERVER上的配置

   (1).安装数据库

   (2).修改数据库配置文件,指明server_id,开启二进制日志(log-bin)

   (3).启动数据库,查看当前是哪个日志,position号是多少

   (4).登陆数据库,授权用户[ip地址为从机IP地址,如果是双向主从,这里的还需要授权本机的IP地址(此时自己的IP地址就是从IP地址)]

   (5).备份数据库[记得加锁和解锁]

   (6).传送备份到从DB server上

   (7).启动数据库

以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:

   (1).登陆数据库,指定主DB server的地址,用户,密码等信息[此步仅双向主从时,需要]

   (2).开启同步,查看状态

2.从DB SERVER上的配置

  (1).安装数据库

  (2).修改数据库配置文件,指明server_id[如果是搭建双向主从的话,也要开启二进制日志(log-bin)]

  (3).启动数据库,还原备份

  (4).查看当前是哪个日志,position号是多少[单向主从此步不需要,双向主从需要]

  (5).指定主DB server的地址,用户,密码等信息

  (6).开启同步,查看状态


五、单向主从环境[也称 mysql A/B复制]的搭建案例:

1.主DB server和从DB server都安装相应版本的数据库,我的两台DB server都已经安装好(5.6.14版本),都会是双实例,这里就不演示安装,,可以参考mysql源码编译安装和mysql多实例配置两篇文章

注:两台机器的的selinux都是disable(永久关闭selinux,请修改/etc/selinux/config,将SELINUX改为disabled),防火墙可以选择关闭,开启的话也行[不行的话,添加防火墙策略]

2.修改主DB server的配置文件(/etc/my.cnf),开启日志功能,设置server_id值,保证唯一[client102为主DB server]

[root@client102 scripts]# vim /etc/my.cnf # 修改配置文件里,下面两个参数: # 设置server_id,一般建议设置为IP,或者再加一些数字 server_id =102 # 开启二进制日志功能,可以随便取,最好有含义 log-bin=mysql3306-bin

3.启动数据库服务器,并登陆数据库,授予相应的用户用于同步

# 我这里是多实例mysql,所以启动是这样的,如果大家是单实例的,就直接启动就可以[/etc/init.d/mysqld start] [root@client102 scripts]# mysqld_multi start 3306 # 登陆mysql 服务器 [root@client102 scripts]# mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p # 授予用户权限用于主从同步 mysql> grant replication slave on *.* to 'kongzhong'@'192.168.1.100' identified by 'kongzhong'; Query OK, 0 rows affected (0.00 sec) # 刷新授权表信息 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) # 查看position 号,记下position 号(很重要,从机上需要这个position号和现在的日志文件,我这里是414和mysql3306-bin.000001) mysql> show master status; +----------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------+----------+--------------+------------------+-------------------+ | mysql3306-bin.000001 | 414 | | | | +----------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)

4.为保证主DB server和从DB server的数据一致,这里采用主备份,从还原来实现初始数据一致

# 临时锁表 mysql> flush tables with read lock; # 我这里实行的全库备份,在实际中,我们可能只同步某一个库,可以只备份一个库 # 新开一个终端,执行如下操作 [root@client102 data]# mysqldump -p3306 -uroot -p -S /usr/local/mysql/mysqld3306.sock --all-databases > /tmp/mysql.sql # 解锁 mysql> unlock tables; # 将备份的数据传送到从机上,用于恢复 [root@client102 data]# scp /tmp/mysql.sql root@192.168.1.100:/tmp

5.从DB server配置文件只需修改一项,其余用命令行做

[root@client100 ~]# vim /etc/my.cnf # 设置server_id,一般建议设置为IP,或者再加一些数字 server_id =100
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn