• 欢迎访问VPS岛网站,国外VPS,国内VPS,国外服务器,国内服务器,服务器主机,测评及优惠码,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站 QQ群

mysql

mysql技术 LLLLLLLLz 16次浏览 已收录 0个评论

MySQL主从复制                                            

AB主从复制:
简称AB复制,在A主机上做create、update、insert、drop、delete等数据库、表、记录的增、删、改操作,B主机上会自动做数据库、表、记录的同步更新。

AB复制的工作原理(即工作过程):
1. 在主库上把数据更改记录到二进制日志(Binary Log)中。
2. 备库将主库上的日志复制到自己的中继日志(Relay Log)中。
3. 备库读取中继日志中的事件,将其重放到备库数据库之上。

AB复制的一主一从模式工作过程:
A主机: create database db1 —-> 会将此命令自动写入本机的二进制日志文件中

B主机: I/O线程 监测并读A主机上的二进制日志文件新增的内容,且将新内容写入到B主机自己的中继日志文件中
SQL线程 读取B主机上中继日志文件中心的SQL语句,并且自动执行这些SQL语句。最终在B主机上创建了db1这个库。

网络拓扑:(1主1从)
mysql主服务器(master主人):192.168.11.11
mysql从服务器(slave随从、奴隶):192.168.11.12

项目准备:(在master、slave主机上分别做如下操作)
0.[选做]。安装mariadb-server服务器端软件、mariadb客户端软件,启动mariadb服务,查mariadb服务端口号3306。
yum install -y mariadb-server mariadb
systemctl restart mariadb
lsof -i :3306 或 netstat -atunlp | grep :3306

1.停止master、slave主机上的mariadb服务,并且清空/var/lib/mysql的所有数据。
systemctl stop mariadb
rm -rfv /var/lib/mysql/*

2.重启master、slave主机上的mariadb服务。并且查库、test库中是否有表(无表就OK)。
systemctl restart mariadb
mysql -uroot -e 'show databases;use test;show tables;'

AB复制的配置思路:
1.在A主机(master)上的/etc/my.cnf主配置文件中开启binlog二进制日志文件功能,并且给主机设置server-id唯一标识编号。重启mariadb服务。
2.在A主机上创建用于AB主从复制的用户账号,并查看master状态中的binlog日志文件的position位置数值。
3.在B主机上的/etc/my.cnf主配置文件中设置server-id唯一标识编号。。重启mariadb服务。
4.在B主机上用help change master查命令帮助,并用change master命令告诉B主机他的master主人的正确信息
5.在B主机上用start slave启动mariadb的随从服务,并用show slave status查看AB主从复制的数据同步状态,要确认两个线程的yes状态。

AB复制的配置实施:
1.在A主机(master)上的/etc/my.cnf主配置文件中开启binlog二进制日志文件功能,并且给主机设置server-id唯一标识编号。重启mariadb服务。
vim /etc/my.cnf 做如下修改
[mysqld] 找到此行,添加如下蓝色字的3行功能选项
server-id=11 指定server-id为11,通常用本机IP的最后一组数
log-bin=master-bin 添加此行,指定二进制日志文件名为master-bin
skip_name_resolv=1 跳过域名解析功能

重启mariadb服务:
systemctl restart mariadb

2.在A主机上创建用于AB主从复制的用户账号,并查看master状态中的binlog日志文件的position位置数值。
mysql -uroot -e "grant replication slave on *.* to 'rep'@'192.168.11.%' identified by 'rep';"
mysql -uroot -e 'select user,host,password from mysql.user;
mysql -uroot -e 'reset master;show master status;'

3.在B主机上的/etc/my.cnf主配置文件中设置server-id唯一标识编号。重启mariadb服务。
vim /etc/my.cnf 做如下修改
[mysqld] 找到此行,添加如下蓝色字的3行功能选项
server-id=12 指定server-id为12,通常用本机IP的最后一组数
#log-bin=slave-bin 添加此行,指定二进制日志文件名为slave-bin
skip_name_resolv=1 跳过域名解析功能

重启mariadb服务:
systemctl restart mariadb
mysql -urep -prep -h192.168.11.11 -e 'status;'
测试rep用户是否能远程访问master主机的数据库服务

4.在B主机上用help change master查命令帮助,并用change master命令告诉B主机他的master主人的正确信息。
mysql
help change master to;
CHANGE MASTER TO
MASTER_HOST='
192.168.11.11',
MASTER_USER='
rep',
MASTER_PASSWORD='
rep',
MASTER_PORT=3306,
MASTER_LOG_FILE='
master-bin.000001',
MASTER_LOG_POS=
542,
MASTER_CONNECT_RETRY=10;
//是指从和主连不上是重试连接的时间为10秒

金老师的环境:
CHANGE MASTER TO
MASTER_HOST='
10.31.165.5',
MASTER_USER='
rep',
MASTER_PASSWORD='
rep',
MASTER_PORT=3306,
MASTER_LOG_FILE='
master-bin.000001',
MASTER_LOG_POS=
542,
MASTER_CONNECT_RETRY=10;

5.在B主机上用start slave启动mariadb的随从服务,并用show slave status查看AB主从复制的数据同步状态,要确认IO和SQL两个线程的yes状态。
mysql -uroot -p
start slave;
show slave status\G
注: \G 是分组(group)显示信息。

注:change master to设置的信息默认保存在/var/lib/mysql/master.info文件中,relay中继日志的设置信息默认保存在/var/lib/mysql/relay-log.info文件中。
ls /var/lib/mysql/
cat /var/lib/mysql/master.info
cat /var/lib/mysql/relay-log.info
cat /var/lib/mysql/mysql.sock 此套接字设备文件无法查看,是正常现象

5.测试主从复制的数据同步。
首先,在A主机(192.168.11.11)上创建一个名称为db1的库,并查库。
mysql
create database db1;
show database;
SHOW PROCESSLIST; 查mysql的内部进程(即线程)清单

然后,在B主机上查库,看到了db1库,说明AB主机的数据自动同步成功。
mysql -uroot -e 'show databases;'

附加练习:实现AB主从复制的双主架构(互为主从)。
实现思路如下:
首先:A主的操作(1) —–> B从的操作(2)
然后:A从的操作(4) <—– B主的操作(3


VPS岛 的文章和资源来自互联网,仅作为参考资料,如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。丨 转载请注明mysql
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址