MySQL主从同步(⼀主⼀从、⼀主多从、主从从)等结构的概述与配置
前⾔:前⾯我们了解了MySQL数据库的基础知识,今天及接下来的五天时间⾥我会给⼤家带来MySQL进阶⽅⾯的⼀些学习总结,如有不⾜,还请⼤家留⾔指出;下⾯我们就开始今天的内容。
**
部署mysql主从同步结构
**
主从同步概述
MYSQL主从同步
客户端访问主库,从库复制、同步主库的所有操作
单项复制时,建议将从库设置为只读
主从同步原理——从库 从主机上同步数据的⼯作过程
Master,记录数据更改操作
— 启⽤binlog⽇志
— 设置binlog⽇志格式
— 设置server_id
Slave运⾏2个线程
— Slave_IO:复制master主机binlog⽇志⽂件⾥的SQL到本机的relay-log⽂件⾥
—
Slave_SQL:执⾏本机relay-log⽂件⾥的SQL语句,重现Master的数据操作
构建主从同步
基本构建思路
1. 确保数据相同
– 从库必须要有主库上的数据。
2. 配置主服务器
– 启⽤ binlog ⽇志及设置格式,设置 server_id, 授权⽤户
会计学专业课程3. 配置从服务器
– 设置 server_id ,指定主数据库服务器信息
4. 测试配置
– 客户端连接主库,写⼊的数据,在连接从库的时候也确保数据⼀致
Master服务器
– 应包括希望同步的所有库
– 对采⽤ MyISAM 的库,可离线备份
主库配置选项
Slave 服务器
– 离线导⼊由 Master 提供的备份
– 清空同名库(若有的话
从库配置选项
主从配置常⽤参数写在主库配置⽂件⾥参数(对所有从库都有效)
binlog_do_db=库名列表 //允许同步的库
binlog_ignore_db=库名列表 //不允许同步的库
写在从库配置⽂件⾥参数(只针对从库本机有效)
replicate_do_db=库名列表 //指定只同步的库
replicate_ignore_db=库名列表 //指定不同步的库
主从同步结构模式
基本应⽤:
— 单项复制:⼀主⼀从
扩展应⽤:
— ⼀主多从
— 链式复制:主从从农行活期存款利率
— 主主(互为主从)
mysql主从同步配置步骤
配置主库
启⽤binlog⽇志
⽤户授权
查看当前正在使⽤的binlog⽇志
配置从库
指定server_id
指定主库信息
启动slave程序
查看slave程序的状态信息
【⼀主⼀从同步结构配置】
确保数据相同
主库:192.168.4.51
启⽤ binlog ⽇志及设置格式,设置 server_id
[root@mysql51 ~]# vim /etc/myf
[mysqld]
server_id=51
log_bin=mysql51 //binlog⽇志⽂件名称
binlog_format="mixed" //⽇志⽂件格式
[root@mysql51 ~]# systemctl restart mysqld
[root@mysql51 ~]# ls /var/lib/mysql/mysql51*
授权⽤户
[root@mysql51 ~]# mysql -uroot -A
mysql> grant replication slave on *.* to repluser@"%" identified by "A"; mysql> select host,user from mysql.user where user='repluser';
mysql> show master status; //查看使⽤的⽇志⽂件及偏移量
从库:192.168.4.52
[root@mysql52 ~]# vim /etc/myf
[mysqld]
server_id=52
[root@mysql52 ~]# systemctl restart mysqld
[root@mysql52 ~]# mysql -u root -A
mysql> show master status;
mysql> change master to master_host='192.168.4.51', //主库ip地址
-> master_user='repluser', //出库授权⽤户名
-> master_password='A', //授权⽤户密码
-
> master_log_file='mysql51.000001', //⽇志⽂件
-> master_log_pos=441; //偏移⽂件
mysql> start slave; //启动salve进程什么游戏好玩
mysql> show slave status\G; //查看slave状态
Slave_IO_Running: Yes //IO线程状态
Slave_SQL_Running: Yes //SQL线程状态
如果 Slave_IO_Running为NO,查看下⾯Last_IO_Error: Fatal error:的报错信息[root@mysql52 mysql]# vim autof //此配置⽂件查看sql数据库的uuid
从服务器相关⽂件
测试主从同步配置:在及客户端50主机连接主机51对数据库做访问
· 在 Master 上操纵数据
– 新建 newdb 库、 newtbl 表
赛尔号坐骑精灵– 任意插⼊⼏条表记录
· 在 Slave 上查看数据更改情况
– 确认新建的 newdb 库、 newtbl 表
– 列出 newtbl 表的所有记录
1. 在主库51上添加授权⽤户给客户端50主机连接使⽤
mysql> create database db1;
mysql> create table db1.a(id int);
mysql> grant select,insert,update on db1.* to admin@"%" identified by "A";
2. 在客户端50主机连接主库服务器51,对记录做访问
[root@client50 ~]# mysql -uadmin -h192.168.4.51 -A
mysql> select @@hostname;
mysql> insert into db1.a values(111),(1231),(324);
mysql> select * from db1.a;
3. 再从库服务器52本机也能查看到相同的数据为成功
[root@mysql52 mysql]# mysql -u root -A
mysql> select * from db1.a;
【⼀主多从 同步结构配置】
把数据库服务器53 也配置为51的从数据库服务器
主库主机51 已经是主数据库服务器,⽆需再做配置
配置从库53
与主库数据⼀致(把主库数据的完全备份拷贝到本机执⾏恢复)
[root@mysql51 ~]# mysqldump -uroot -A db1 > /root/db1.sql
英语辩论[root@mysql51 ~]# scp db1.sql 192.168.4.53:/root/
[root@mysql53 ~]# mysql -u root -A
mysql> create database db1;
mysql> use db1;
mysql> source /root/db1.sql;
mysql> select * from db1.a;
[root@mysql53 ~]# vim /etc/myf
[mysqld]
server_id=53
[root@mysql53 ~]# systemctl restart mysqld
检测授权⽤户能否连接数据库
[root@mysql53 ~]# mysql -h192.168.4.51 -urepluser -A
数据管理员指定主库数据信息
[root@mysql53 ~]# mysql -uroot -A
mysql> change master to
-> master_host='192.168.4.51',
-> master_user='repluser',
-> master_password='A',
-> master_log_file='mysql51.000001',
-
> master_log_pos=1337;
master_log_pos=1337:从51主机上执⾏sql命令mysql> show master status;获取查看slave程序的状态信息
mysql> start slave;
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
测试
客户端50连接主机51写⼊的数据在从库52和53主机上也能查看到数据,即成功
[root@client50 ~]# mysql -uadmin -h192.168.4.51 -A
mysql> insert into db1.a values(66066);
51和52主机:登⼊数据库,执⾏mysql> select * from db1.a;查看是否有插⼊的数据
配置从库暂时不同步主机数据:停⽌从库的slave程序即可
把从库还原成独⽴的数据服务器:让主机53不做51的从库
1.停⽌服务
[root@mysql53 ~]# systemctl stop mysqld
2.删除从库⽂件
[root@mysql53 ~]# rm -rf /var/lib/mysql/master.info
[root@mysql53 ~]# rm -rf /var/lib/mysql/mysql53-relay-bin.*
[root@mysql53 ~]# rm -rf /var/lib/mysql/relay-log.info
3.修改配置
[root@mysql53 ~]# vim /etc/myf
[mysqld]
#server_id=53 //删除此⾏
4.重起服务查看主从状态婚假 国家规定
[root@mysql53 ~]# systemctl start mysqld
[root@mysql53 ~]# mysql -uroot -A -e "show slave status\G"
【主从从同步结构配置】
配置主库51:
启⽤binlog⽇志 ⽤户授权 查看⽇志信息
配置从库52(既做主⼜做从)
主配置⽂件⾥:要启⽤log_slave_updates配置
做主库的配置:启⽤binlog⽇志 ⽤户授权 查看⽇志信息
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论