Mysql的AB复制
实验环境
Master 172.25.23.4
Slave1 172.25.23.5
Slave2 172.25.23.6
Selinux iptables disabled 加解析
注意:mysql的AB复制,master和slave的数据库版本要么一样,要么slave的版本高于master
Mysql 5.1
一.Mysql 的AB 复制
MASTER
1.安装软件
yum install -y mysql-server
2.修改配置文件,启动服务
(1)初始化数据库
mysql_secure_installation
(2)修改配置文件 /etc/my.cnf
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下参数
log-bin=mysql-bin # 启动二进制日志系统
binlog-do-db=westos # 二进制需要同步的数据库名,如果需要同步多个库,例如要再同步test库,再添加一行binlog-do-db=test
server-id=1 # 必须为1到232–1之间的一个正整数
binlog-ignore-db=mysql # 禁止同步 mysql 数据库
(3)启动服务
/etc/init.d/mysqld start
(4)设置数据库,创建同步帐户,并给予权限
SLAVE1
1.安装软件
yum install -y mysql-server
2.修改配置文件,启动服务
(1)初始化数据库
mysql_secure_installation
(2)修改配置文件 /etc/my.cnf
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下参数
server-id=2# 从服务器 ID 号,不要和主 ID 相同,如果设置多个从服务器,每个从服务器必须有一个唯一的 server-id 值,必须与主服务器的以及其它从服务器的不相同。可以认为 server-id 值类似于 IP 地址:这些 ID 值能唯一识别复制服务器群集中的每个服务器实例。
(3)启动服务
/etc/init.d/mysqld start
(4)设置数据库
注意:Master和Slave的底层数据完全一样,才可以做同步,同步的是sql语句。
a)创建westos数据库
mysql -pwestos -e “create database westos”
b)在Master端查看master的状态
c)在Slave端执行以下命令
注意:确保Salve_IO_Running 和 Slave_SQL_Running 必须为yes ,这样表明数据库正在同步
Salve_IO_Running :No ----> 关注用户访问和网络设置(iptables selinux disabled)
Slave_SQL_Running:No ----> 两边的基础数据要一致
测试
在Master 端添加,修改数据库,可以在Slave 端同步
Master:
Slave:
SLAVE2
1.安装软件
yum install -y mysql-server
2.修改配置文件,启动服务
(1)初始化数据库
mysql_secure_installation
(2)修改配置文件 /etc/my.cnf
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下参数
server-id=2# ID不同
(3)启动服务
/etc/init.d/mysqld start
(4)修改salve1上的配置文件
vim /etc/my.cnf
[mysqld]# 在[mysqld]下添加以下参数
server-id=2
log-bin=mysql-bin
binlog-do-db=westos
binlog-ignore-db=mysql
log-slave-updates
/etc/init.d/mysqld restart
3.设置数据库
(1) 在 slave1 上创建同步帐户,并给予权限
(2) 在 slave2 上执行以下命令
4.将原有的数据备份到slave2上
由于 master 上已经有数据,而新加的 slave2 没有,必须在配置复制前同步数据,最好在备份数据的时候,将master锁住,完成之后解锁,防止在备份的时候写入数据
FLUSH TABLES WITH READ LOCK;#锁表
UNLOCK TABLES;#表解锁
(1) 将master上的二进制记录文件拷到slave2
(2) 查看记录文件中所需要拷贝内容的起止结束时间,或起止结束position
......
position 为 106 ~ 698
(3) 将所需要的内容拷贝到slave2的mysql中
(4) 也可以通过mysqldump来进行数据库的备份
mysqldump --all-databases --lock-all-tables > backup.db
再将备份好的backup.db传入slave2上的数据库
(5) 进入slave2中的数据库,可以查看到备份过来的数据
5.在master端更新数据,salve1 slave2均可同步到
Mysql 5.7 GTID 多线程
Master 172.25.23.5
Slave 172.25.23.6
Selinux iptables disbaled 加解析
二.
1.删除掉现在所使用的mysql的所有信息,卸载掉所有相关软件
2.安装mysql 5.7 ,启动 ,初始化
/etc/init.d/mysqld start
注意:初始密码在日志中查看
mysql_secure_installation
MASTER
1.修改配置文件
vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=westos
gtid-mode=on
enforce-gtid-consistency=on
/etc/init.d/mysqld restart
2.进入mysql数据库中的mysql ,可看到
3.给予slave权限
.....
还未做修改,所以为空
SLAVE
1.修改配置文件
vim /etc/my.cnf
[mysqld]
server-id=2
gtid-mode=on
enforce-gtid-consistency=on
/etc/init.d/mysqld restart
2.数据库中执行以下命令
......
Second_Behind_Master : 延迟(仅作为参考数据)
3.测试
在Master 端的westos数据库中做任何修改,Slave都可以被同步
每做一次修改,gtid会增加
4.使用mysql 5.7版的,其二进制文件会是加密状态
......
5.多线程
(1)单线程
(2)多线程
a) 修改配置文件
vim /etc/my.cnf
[mysqld]
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
b)
......
6.Mysqlpump 5.7新增的备份工具
mysqldump -pWangjiao+0811 mysql > mysql.sql
mysqlpump -pWangjiao+0811 -B mysql westos > backup.sql
mysql -pWangjiao+0811 westos < add.sql
vim add.sql
call test1 --> 触发
Mysqldump 单线程备份
Mysqlpump Mydumper 多线程备份
转载于:https://blog.51cto.com/11851085/1847445