部署mysql主从同步

部署mysql主从同步
一、什么是mysql主从同步
主:正在被客户端访问的数据库服务器,被称作主库服务器。
从:自动同步主库上的数据的数据库服务器,被称作从库服务器。

二、配置mysql主从同步
2.1 拓扑图
数据库服务器 192.168.4.51 做主库
数据库服务器 192.168.4.52 做从库

2.2 环境准备
主从同步未配置之前,要保证从库上要有主库上的数据。
禁用selinux ]# setenforce 0
关闭防火墙服务]# systemctl stop firewalld
物理连接正常 ]# ping -c 2 192.168.4.51/52
数据库正常运行,管理可以从本机登录

2.3 配置mysql主从同步
+++2.3.1 配置主库
a 创建用户授权
b 启用binlog日志
c 查看正在使用binlog日志信息

+++.3.2 配置从库
a 验证主库的用户授权
b 指定server_id
c 数据库管理员本机登录,指定主数据库服务器的信息
mysql> change master to
-> master_host="主库ip地址",
-> master_user="主库授权用户名",
-> master_password="授权用户密码",
-> master_log_file="主库binlog日志文件名",
-> master_log_pos=binlog日志文件偏移量;
d 启动slave进程
e 查看进程状态信息

相关命令
mysql> show slave status; # 显示从库状态信息
mysql> show master status; #显示本机的binlog日志文件信息
mysql> show processlist; #查看当前数据库服务器上正在执行的程序
mysql> start slave ; #启动slave 进程
mysql> stop slave ; #停止slave 进程

2.4 在客户端测试主从同步配置
2.4.1 在主库服务器上添加访问数据时,使用连接用户
2.4.2 客户端使用主库的授权用户,连接主库服务器,建库表插入记录
2.4.3 在从库本机,使用管理登录查看是否有和主库一样库表记录及授权用户

2.4.4 客户端使用主库的授权用户,连接从库服务器,也可以看到新建的库表及记录
+++++++++++++++++++++++++++++++
三、mysql主从同步的工作原理
从库数据库目录下的文件:
master.info 记录主库信息
主机名-relay-bin.XXXXXX 中继日志文件,记录主库上执行过的sql命令
主机名-relay-bin.index 索引文件,记录当前已有的中继日志文件
relay-log.info 中继日志文件,记录当前使用的中继日志信息

从库IO线程 和SQL线程的作用?
IO线程 把主库binlog日志里的sql命令记录到本机的中继日志文件
SQL线程 执行本机中继日志文件里的sql命令,把数据写进本机。

IO线程报错原因: 从库连接主库失败(ping grant firewalld selinux)
从库指定主库的日志信息错误(日志名 偏移量)

Last_IO_Error: 报错信息

修改步骤:
mysql> stop slave;
mysql> change master to 选项="值";
mysql> start slave;

SQL线程报错原因: 执行本机中继日志文件里的sql命令,用到库或表在本机不存在。
Last_SQL_Error: 报错信息

设置从库暂时不同步主库的数据?
在从库上把slave 进程停止
mysql> stop slave;

把从库恢复成独立的数据库服务器?
]# rm -rf /var/lib/mysql/master.info
]# systemctl restart mysqld
]# rm -rf 主机名-relay-bin.XXXXXX 主机名-relay-bin.index relay-log.info

四、mysql主从同步结构模式
一主一从
一主多从

主从从
主主结构(又称作互为主从)

五、mysql主从同步常用配置参数
主库服务器在配置文件my.cnf 使用的参数
]#vim /etc/my.cnf
[mysqld]
binlog_do_db=库名列表 #只允许同步库Binlog_Ignore_DB=库名列表 #只不允许同步库
]# systemctl restart mysqld

从库服务器在配置文件my.cnf 使用的参数
]# vim /etc/my.cnf
[mysqld]
log_slave_updates
#级联复制
relay_log=中继日志文件名
replicate_do_db=库名列表 #只同步的库
replicate_ignore_db=库名列表 #只不同步的库
:wq
]# systemctl restart mysqld

配置mysql主从从结构
主库 192.168.4.51
从库 192.168.4.52 ( 做51主机从库)
从库 192.168.4.53 ( 做53主机从库)
要求:客户端访问主库51 时 创建库表记录 在52 和53 数据库服务器都可以看到

配置步骤:
一、环境准备
主从同步未配置之前,要保证从库上要有主库上的数据。
禁用selinux ]# setenforce 0
关闭防火墙服务]# systemctl stop firewalld
物理连接正常 ]# ping -c 2 192.168.4.51/52
数据库正常运行,管理可以从本机登录
二、配置主从同步
2.1 配置主库51
用户授权
启用binlog日志
查看正在使用的日志信息

2.2 配置从库52
用户授权
启用binlog日志,指定server_id 和 允许级联复制
查看正在使用的日志信息
验证主库的授权用户
管理员登录指定主库信息
启动slave进程
查看进程状态信息

2.3 配置从库53
验证主库的授权用户
指定server_id
管理员登录指定主库信息
启动slave进程
查看进程状态信息

三、客户端验证配置
3.1 在主库上授权访问gamedb库的用户
3.2 客户端使用授权用户连接主库,建库、表、插入记录
3.3 客户端使用授权用户连接2台从库时,也可以看到主库上新的库表记录

六、mysql主从同步复制模式
异步复制
全同步复制
半同步复制

查看是否可以动态加载模块
mysql> show variables like "have_dynamic_loading";

主库安装的模块
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;

从库安装的模块
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;

查看系统库下的表,模块是否安装成功
mysql>
SELECT PLUGIN_NAME , PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE
PLUGIN_NAME LIKE ‘%semi%‘;

启用半同步复制模式
主库
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

从库
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

查看半同步复制模式是否启用
mysql> show variables like "rpl_semisync%_enabled";

修改配置文件/etc/my.cnf 让安装模块和启用的模式永久生效。

主库
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
:wq

从库
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
:wq

既做主又做从
vim /etc/my.cnf
[mysqld]
plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled = 1
rpl-semi-sync-slave-enabled = 1
:wq

原文地址:http://blog.51cto.com/13740508/2122723

时间: 2024-12-29 07:29:01

部署mysql主从同步的相关文章

mysql主从同步(4)-同步延迟状态考量(seconds_behind_master和pt-heartbea)

一般情况下,我们是通过"show slave status \G;"提供的Seconds_Behind_Master值来衡量mysql主从同步的延迟情况.具体说明见:mysql主从同步(4)-Slave延迟状态监控,这种方法在大多数情况下确实是可行的.但是经验告诉我,仅仅依靠Seconds_Behind_Master的值来监测主从同步数据是否延迟是绝对不可靠的!!! 曾经遇到过的一个坑:Mysql主从环境部署后,刚开始主从数据同步是没问题的,也是通过监控Seconds_Behind_M

MySQL主从同步部署

mysql主从同步部署: master:192.168.2.67 slave:192.168.2.211 同步系统非默认库,master中其它库已经运行一段时间. master端: vim /etc/my.cnf server-id       = 1    master端ID号 log-bin=/data/logbin/mysql-bin    日志路径及文件名 #binlog-do-db = debit            同步debit,此处关闭的话,就是除不允许的,其它的库均同步. b

趁一切还来得及【五】数据库MySQL主从同步的实践部署

自笑栖迟淮海客,十年心事一灯前.                                           --[元]萨都拉 第二章 数据库MySQL主从同步部署操作实践 2.1 数据同步相关应用基础 ①MySQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的部署管理也就显得非常重要. ②MySQL主从同步的作用:(1) 数据分布,(2) 负载平衡(load balancing),(3) 备份,(4) 高可用性(high availability

MySQL 主从同步(1) - 概念和原理介绍 以及 主从/主主模式 部署记录

Mysql复制概念Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起

mysql主从同步中出现的问题梳理

之前部署了Mysql主从复制环境(MySQL复制环境(主从/主主)部署总结性梳理),在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是MySQL数据库主从同步延迟MySQL数据库slave服务器延迟的现象是非常普遍的,MySQL复制允许从机进行SELECT操作,但是在实际线上环境下,由于从机延迟的关系,很难将读取操作转向到从机.这就导致了有了以下一些潜规则:"实时性要求不高的读取操作可以放到slav

企业生产MySQL主从同步配置

MySQL主从同步配置 前言:测试环境 一台mysql多个实例 主机IP地址 10.0.0.52 Master   3306 Salve    3307 一.主库要开启binlog服务 1. 1修改配置文件3306/my.cnf [[email protected] ~]# egrep "log-bin|server-id" /data/3306/my.cnf   log-bin = /data/3306/mysql-bin server-id = 1 1. 2查看主库有没有开启bin

MySQL主从同步实验

MySQL的主从复制方案,是数据的传输.只不过MySQL无需借助第三方工具,而是其自身同步复制的功能,另外一点,MySQL的主从复制并不是磁盘上直接同步,而是逻辑binlog日志同步到本地再应用执行的过程. 一.MySQL主从同步的简要操作过程: 1)从库开启两个线程,分别是IO线程和SQL线程,而主库只开启有一个IO线程 2)在从库上配置连接主库的IP地址.端口号.用同步的用户名.密码.准备更新的二进制文件名字.和准备更新的位置点(pos点,即从那个位置点开始更新) 3)在启动slave-id

mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理

转自:http://www.cnblogs.com/kevingrace/p/6261091.html 在mysql工作中接触最多的就是mysql replication mysql在复制方面还是会有一些常规问题: 比如主库宕机或者从库宕机有可能会导致复制中断,通常需要进行人为修复, 或者很多时候需要把一个从库提升为主库,但对从库和主库的数据一致性不能保证一样. 这种情况下就需要使用percona-toolkit工具的pt-table-checksum组件来检查主从数据的一致性:如果发现不一致的

MySQL主从同步与读写分离

MySQL主从同步MySQL AB复制1.对指定库的异地同步.2.MySQL主-->从复制架构的实现.3.MySQL服务器的只读控制. 主从:单向复制时,建议将从库设置为只读. 主从复制的原理:Master,记录数据更改操作.-启动binlog日志-设置binlog日志格式-设置server_id Slave,运行2个线程.-Slave_IO:复制master主机binlog日志文件里的SQL到本机的relay-log文件里.-Slave_SQL:执行本机relay-log文件里的SQL语句,重