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


二、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都必须唯一
四、主从配置的简要步骤:
附简要示意图:


1.主DB SERVER上的配置
(1).安装数据库
(2).修改数据库配置文件,指明server_id,开启二进制日志(log-bin)
Mootion
Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。
177 查看详情
(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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/903175.html
微信扫一扫
支付宝扫一扫