Mysql 主从复制(AB复制)
Mysql 主从复制(AB复制)
Mysql的主从复制又叫做AB复制,主要作用就是将主服务器上的数据及时复制到从服务器上,来实现数据的同步,这样做的好处有,在进行数据备份时,可以减轻主服务器的运行压力,另外即使主服务器宕机了,也能从从服务器上取得主服务器的数据,从而保证数据不会丢失。这对于一个企业来说是至关重要的。一般在实际生产环境中,由单台mysql作为独立的数据库是完全不能满足实际需要的,无论在安全性,高可用性以及高并发等方面,一般是通过主从复制(Master-Slave)的方式来同步数据,再通过keepalived组件或者pacemaker来解决单点故障,实现高可用性,最后通过读写分离(Mysql-Proxy)来提升数据库的并发负载能力。
今天我们就来实现主从复制,并且是采用两种版本的数据库,第一个主从复制实验采用的是mysql-5.1.71-1.el6 ,第二个主从复制实验采用的是mysql-5.7.11-1.el6版本。好了,话不多说,直接上步骤。
注意:一般作主从复制时一定要使得从机的mysql版本要和主服务器mysql版本一直,甚至高于主服务器才行。如果主服务器的mysql之前里面有数据因该进行数据备份,再将数据拷贝到从数据库中,保证数据库初态一致。
要求:新开两台虚拟机,一台主服务器,一台从服务器。均安装上数据库mysql
实验一:低版本的主从复制,直接通过yum源进行安装。
MASRER: VM1 IP=172.25.45.15 hostname=mysql1
#yum install -y mysql-server
#/etc/init.d/mysqld start #启动数据库
#mysql_secure_installation #数据库安全初始化,设置密码等。
#mysql -pwestos #登陆数据库
#vim /etc/my.cnf
7server-id=1 #数据库id号,为1时,表示为master,每个同步的服务器都必须设定一个唯一的编号,否则同步就不能正常运行。
8log-bin=mysql-bin #启用二进制日志
#/etc/init.d/mysqld restart
#mysql -pwestos :进入数据库,进行sql语句操作
>showmaster status;
>grantreplication slave on *.* to min@'172.25.45.16' identified by 'westos'; #授权给从mysql数据库服务器172.25.45.16;
此时需要在从数据库服务器上验证以下授权的用户及密码能否远程登陆到主服务器上。(#mysql -h 172.25.45.15 -umin -pwestos)
创建库和表,在备份机进行验证。
等操作。
SLAVE: VM2 IP=172.25.45.16 hostname=mysql2
#yum install -y mysql-server
#vim /etc/my.cnf
7server-id=2 #添加数据库id号。
#/etc/init.d/mysqld start
#mysql_secure_installation #和上面类似,
#mysql -pwestos #进入数据库,sql语句操作,配置SLAVE机:
>show slave status; #显示从数据库状态。
>change masterto master_host='172.25.10.30',master_user='liumin',master_password='westos',master_log_file='mysql-bin.000001',master_log_pos=106; #执行同步SQL语句,启动slave同步进程
>start slave; #启动slave;
>show slavestatus\G; #显示从数据库状态,检查主从同步。
其中Slave_IO_running:yes 与Slave_SQL_Running:yes的值都必须为yes才表示状态正常。其中Slave_IO_running线程主要负责到Master上复制二进制日志文件的,而Slave_SQL_Running线程主要是将复制的文件在slave上执行一遍。
验证主从复制的效果:
在MASTER上登陆数据库,创建数据库和表,并插入相关的值,再在SLAVE机上的数据库中进行验证。
MASTER:
#Mysql -pwestos
>create databasewestos;
>use westos;
>create table usertb (
-> username varchar(50) not null,
-> password varchar(50) not null);
>desc usertb;
>insert into usertb value ('user1','westos');
>select * fromusertb;
>delete from usertb where username='user1';
>select * from usertb;
SLAVE机:
#mysql -p
>showdatabases;
检测slave是否已经达到数据库的AB主从复制。
注:使用 mysqlbinlog 命令查看MASTER的二进制文件mysql-bin.000001 以及SLAVE的中继日志:mysqld-relay-bin.000001内容。
补充:ABC复制:A---> B ---> C
再开一台虚拟机C:VM3
本次操作相当于把B机当作MASTER,C机当作SLAVE,不过B机的配置文件要进行相应的修改。必须额外添加一行:log-slave-updates.
B机配置且进行授权:
#vim /etc/my.cnf
server-id=2
Log-bin=mysql-bin
log-slave-updates
#/etc/init.d/mysqld restart
#mysql-pwestos
#grant replicationslave on *.* to minmin@'172.25.45.17' identified by 'westos'; #授权给从mysql数据库服务器172.25.45.17;
C机:VM3 IP=172.25.45.17 Hostname=mysql3
#yum install -y mysql-server
#vim /etc/my.cnf
server-id=4
#/etc/init.d/mysqld start
#mysql_secure_installation
#mysql -pwestos
>change master to master_host='172.25.45.17',master_user='minmin', master_password='westos', mastr_log_file='mysql-bin.000001',master_log_pos=106; #执行同步SQL语句,启动slave同步进程。
#start slave
#show slave status\G; #查看slave状态。验证同上。
此时A创建的数据库及表都会同步到B并且也会同时同步到C上。这就是ABC主从复制。
实验二:使用高版本的数据库mysql-5.1.71-1.el6,作主从复制。
得先把之前的低版本mysql卸载干净。
#/etc/init.d/mysqld stop
#cd /var/log/mysql ---> # rm -fr *
# cd /root ---> #rm -fr *
# rpm-qa | grep mysql 查询mysql软件,然后进行卸载。
#rpm -e`rpm -qa | grep mysql` --nodeps
lftp --> mysql-5.7.11-1.el6.x86_64.rpm-bundle.tar
#获得mysql-5.1.71-1.el6软件,可以从官网下载。
#tar -xf mysql-5.7.11-1.el6.x86_64.rpm-bundle.tar :解压tar包。
#yum install -y mysql-community-common-5.7.11-1.el6.x86_64.rpmmysql-community-libs-5.7.11-1.el6.x86_64.rpm mysql-community-client-5.7.11-1.el6.x86_64.rpm mysql-community-server-5.7.11-1.el6.x86_64.rpm
#安装这四个rpm包。
#scp mysql-community-common-5.7.11-1.el6.x86_64.rpmmysql-community-libs-5.7.11-1.el6.x86_64.rpmmysql-community-client-5.7.11-1.el6.x86_64.rpm mysql-community-server-5.7.11-1.el6.x86_64.rpm root@172.25.45.16:
#将MASTER上的rpm包传送到SLAVE机上。
在B机上也要把mysql卸载干净。#rpm -qa | grep mysql
#rpm -e`rpm -qa | grep mysql` --nodeps
# rpm-qa | grep mysql
然后在进行安装nysql数据库。
MASTER: VM1 IP=172.25.45.15 HOSTNAME=mysql1
#/etc/init.d/mysqld start
#less /var/log/mysqld.log #查找原始密码;
#mysql_secure_installation-->输入原始密码,进行初始化并进行改密。
此密码要求8位以上,并且要求大小写字母以及包含特殊字符,和数字。
接下来做数据库的A --- B热备份,和上午的做法完全一致。但是下午采用的mysql-5.7的版本,所以可以采用多线程并行复制,同时采用GTID可以保证数据一致性。这是mysql5.7版本以后才具备的功能。GTID;主要用于保持数据的一致性。
#vim /etc/my.cnf #主备份机都要在最后添加这两行;
Server-id=1
log-bin=mysql-bin
gtid-mode=on
enforce-gtid-consistency=on
#/etc/init.d/mysqld restart #进行mysql服务重起,
#mysql -p #登陆mysql进行授权;
>grant replication slave on *.* tomin@'172.25.45.16' identified by 'westos';
> show master status;
SLAVE: VM2 IP=172.25.45.16 hostname=mysql2
#vim /etc/my.cnf
server-id=2
gtid-mode=on
enforce-gtid-consistency=on
#/etc/init.d/mysqld restart #进行mysql服务重起
#mysql -p
>stop slave; #首先停止slave;
>change master to master_host='172.25.10.30',master_user='minmin',master_password='HELLOmin+1234',master_auto_position=1;
#执行同步SQL语句,采用GTID方式实现多线程并行复制
>start slave;
>show slave status\G; 查看slave状态。
在SLAVE上的mysql主配置文件中添加并行模式:数据备份延迟时间能减少到最小,因为是多线程进行操作,性能能够提升80%左右。
编辑备机mysql主配置文件,添加并行模块;
#vim /etc/my.cnf
server-id=2
gtid-mode=on
enforce-gtid-consistency=on
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
#/etc/init.d/mysqld restart;
#mysql -p
>show processlist; 查看数据库线程数;
最后进行验证主从复制:再MASTER上进行数据库的创建以及相应的表的创建。这在前面都有所阐述,具体参看前面的内容。
测试使用程序add.sql进行,产生一千万条数据。然后在将数据进行备份,比较传统的mysqldump和mysqlpump备份速度的差异。
Maseter:
#mysql -pHELLO+1234 westos < add.sql
> call test1; 正在产生一千万条数据。
同时也可以在备份机上查看主从备份数据的延时情况,比较单进程和多线程复制数据的速度。将刚才产生的一千万条数据使用以下三种方法进行备份,同时比较备份最短的时间。从中可以看出mysqldump的优势。
在主机master上:
# time mysqldump -pHELLO+1234 westos > westos.sql
#time mysqlpump -pHELLO+1234 westos > westos.sql
#time mysqldumper -pHELLO+1234 westos > westos.sql
Mysqldump,mysqlpump,mysqldumper比较这三者之间备份数据的速度.
Lock (HA切换数据一致性) 半同步(给回执才给用户发session) 数据库(延迟时间0 log-bin=mysql-bin
server-id=1 pos号数据一致性)
原子操作:保证数据一直操作结束,不中断。
转载于:https://blog.51cto.com/linuxmin0712/1793459
Mysql 主从复制(AB复制)相关推荐
- mysql ab复制_实现mysql的ab复制(a-b-b,a-b-c)
实验环境准备: 三台虚拟机,IP分别为master: 192.168.2.1 slave:192.168.2.2 slave1:192.168.2.3 将192.168.2.1的主机做为mys ...
- Mysql主从复制,级联复制(重点,重点,重点)命令,参数
文章目录 一. MySQL复制 1.一主一从(小企业) 2.一主多从(业务多) 二. 主从复制原理 MySQL垂直分区( scale up) MySQL水平分片(Sharding) 对应shard中查 ...
- mysql数据库ab复制_mysql replication(AB复制)
Master配置: yum -y install mysql mysql-server /etc/init.d/mysqld start chkconfig mysqld on mysql_secur ...
- Mysql的AB复制,实现AB复制出现的问题
mysql > show slave status\G //查看状态时 slave状态中i/o进程为NO 错误原因: Fatal error: The slave I/O thread sto ...
- Mysql AB复制
Mysql备份与AB复制 复制有两种方式:同步复制(msylq-cluster) 异步复制(mysql-m/s主从备份又称作双机热备) 一.Mysql完全备份(冷备份方式和mysqldump工具) 1 ...
- mysql ab复制延时_Mysql的AB复制
Mysql的AB复制 环境:rhel 6.5 master:192.168.2.1 slave1:192.168.2.2 slave2:192.168.2.10 1.mysql的单向复制 注: mys ...
- 基于GTID模式MySQL主从复制
基于GTID模式MySQL主从复制 GTID复制原理: 基于GTID的复制是MySQL 5.6后新增的复制方式 GTID (global transaction identifier) 即全局事务ID ...
- MySQL主从复制与读写分离配置及实操
MySQL主从复制与读写分离 一.MySQL主从复制 1.复制类型 2.工作过程 二.MySQL读写分离 1.定义 2.存在意义 3.作用时间 4.原理 5.类型 基于程序代码内部实现 基于中间代理层 ...
- rhel6下,mysql 5.6.14 主从复制(也称mysql AB复制)环境配置[基于binlog]
更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn) 一.mysql主(称master)从(称slave)复制的原理: (1).master将数据改变记录到二 ...
最新文章
- 8080CPU寄存器划分
- c语言编程学生管理系统的代码,C语言学生管理系统源代码.doc
- 一个完整项目的学习--
- Scikit中的特征选择,XGboost进行回归预测,模型优化的实战
- linux下使用binfmt_misc设定不同二进制的打开程序
- MATLAB中inputdlg的使用
- 技术解析系列 | PouchContainer 富容器技术
- Go之Beego报错RegisterModel must be run before BootStrap
- 把第三方jar包放入本地仓库
- zigbee协议技术无线模块对智能家居市场前景分析
- web----epoll实现原理
- cmd中java编译命令是什么_cmd中java的编译命令——java和javac、javap
- 中国风海报设计模板,东方韵味尽显
- python 处理异常_Python异常处理– Python尝试除外
- Android音视频学习路线
- XZ_iOS iOS13浅色模式/暗黑模式导航栏颜色不自动适配
- 笨办法学Python习题11 提问
- steam好友服务器当前处于离线状态,steam好友在线为什么显示离线
- python词性标注_Python NLTK学习5(词性标注)
- Mysql如何解决幻读:
热门文章
- 跟老齐学Python:轻松入门pdf
- SSM(springMVC-spring-mybatis)环境搭建-01-建立Maven-web项目
- 多校 Babelfish
- Java 定义字符串数组
- Log4j写入数据库详解
- Linux如何查找大文件或目录总结
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- [转]详细的mysql时间和日期函数
- 打开PDF文件弹出阅读未加标签文档的解决方法
- MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常 解决方法