博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux安装MySQL主从同步(一主两从)搭建与配置
阅读量:4290 次
发布时间:2019-05-27

本文共 3676 字,大约阅读时间需要 12 分钟。

 

一、主从同步原理:

客户端访问主库,从库复制、同步主库的所有操作

单项复制时,建议将从库设置为只读

1

从库 从主机上同步数据的工作过程,如图:

1、Master,记录数据更改操作

— 启用binlog日志

— 设置binlog日志格式
— 设置server_id

2、Slave运行2个线程

— Slave_IO:复制master主机binlog日志文件里的SQL到本机的relay-log文件里
— Slave_SQL:执行本机relay-log文件里的SQL语句,重现Master的数据操作

如图:

2

二、构建思路:

构建主从同步,基本构建思路:

1、确保数据相同

– 从库必须要有主库上的数据。

2、配置主服务器

– 启用 binlog 日志及设置格式,设置 server_id, 授权用户

3、配置从服务器

– 设置 server_id ,指定主数据库服务器信息

4、测试配置

– 客户端连接主库,写入的数据,在连接从库的时候也确保数据一致。

 

三、开始搭建:

主从同步结构模式

基本应用:

— 单项复制:一主一从

1、Master服务器

– 应包括希望同步的所有库

写在主库配置文件里参数(对所有从库都有效)

binlog_do_db=库名列表 //允许同步的库
binlog_ignore_db=库名列表 //不允许同步的库

主库配置选项

3

2、Slave 服务器

– 离线导入由 Master 提供的备份
– 清空同名库

写在从库配置文件里参数(只针对从库本机有效)

replicate_do_db=库名列表 //指定只同步的库
replicate_ignore_db=库名列表 //指定不同步的库

从库配置选项

4

 

1)、主库:192.168.1.1
启用 binlog 日志及设置格式,设置 server_id

[root@mysql51 ~]# vim /etc/my.cnf[mysqld]server_id=11log_bin=mysql11   //binlog日志文件名称binlog_format="mixed"   //日志文件格式[root@mysql51 ~]# systemctl restart mysqld[root@mysql51 ~]# ls /var/lib/mysql/mysql11*

授权用户

[root@mysql51 ~]# mysql -hip -uroot -ppasswd -Pportmysql> grant  replication slave on *.*  to  repluser@"%"  identified  by  "passwd";mysql> select  host,user  from mysql.user where user='repluser';mysql> show master status;     //查看使用的日志文件及偏移量

2)、从库:192.168.1.2

[root@mysql2 ~]# vim /etc/my.cnf[mysqld]server_id=2[root@mysql2 ~]# systemctl restart mysqld[root@mysql2 ~]# mysql -hip -uroot -ppasswdmysql> show master status;   mysql> change  master to master_host='192.168.4.1',    //主库ip地址    -> master_user='repluser',       //出库授权用户名    -> master_password='passwd',  		//授权用户密码    -> master_log_file='mysql1.000001',		//日志文件	-> master_log_pos=1;			//偏移文件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@mysql2 mysql]# vim auto.cnf  //此配置文件查看sql数据库的uuid

从服务器相关文件

5

 

测试主从同步配置:在及客户端主机连接主机1对数据库做访问

• 在 Master 上操纵数据
– 新建 newdb 库、 newtbl 表
– 任意插入几条表记录
• 在 Slave 上查看数据更改情况
– 确认新建的 newdb 库、 newtbl 表
– 列出 newtbl 表的所有记录

 

在主库1上添加授权用户给客户端主机连接使用

 mysql> create  database db1; mysql> create table db1.a(id int); mysql> grant select,insert,update on db1.* to admin@"%" identified by "passwd";

在客户端主机连接主库服务器1,对记录做访问

[root@client0 ~]# mysql  -uroot  -h192.168.1.1  -ppasswd mysql> select @@hostname; mysql> insert into db1.a  values(111),(1231),(324); mysql> select * from  db1.a;

再从库服务器2本机也能查看到相同的数据为成功

[root@mysql2 mysql]# mysql  -u root -ppasswd mysql> select  * from  db1.a;

 

【一主两从 同步结构配置】

把数据库服务器3 也配置为1的从数据库服务器

主库主机1 已经是主数据库服务器,无需再做配置
配置从库3
与主库数据一致(把主库数据的完全备份拷贝到本机执行恢复)

[root@mysql1 ~]# mysqldump -hip -uroot -ppasswd --single-transaction --master-data=1 --databases db1  >  /root/db1.sql[root@mysql1 ~]# scp  db1.sql   192.168.1.3:/root/[root@mysql3 ~]# mysql  -u root -ppasswdmysql> create database db1;mysql> use db1;mysql> source  /root/db1.sql;mysql> select * from db1.a;[root@mysql3 ~]# vim /etc/my.cnf[mysqld]server_id=3[root@mysql3 ~]# systemctl restart mysqld

检测授权用户能否连接数据库

[root@mysql3 ~]# mysql -h192.168.1.1  -urepluser  -ppasswd

数据管理员指定主库数据信息

[root@mysql3 ~]# mysql -hip -uroot -ppasswdmysql> change master  to	-> master_host='192.168.1.1',	-> master_user='repluser',	-> master_password='passwd',	-> master_log_file='mysql1.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

测试

客户端0连接主机1写入的数据在从库2和3主机上也能查看到数据,即成功

[root@client0 ~]# mysql -hip -uadmin  -h192.168.1.1  -ppasswdmysql> insert into db1.a values(66066);

 

从库1和2主机:登入数据库,执行mysql> select * from db1.a;查看是否有插入的数据

如果有,那么就可以了,搭建完成

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://iemgi.baihongyu.com/

你可能感兴趣的文章
javascript类的创建与实例对象
查看>>
javascript原型详解(1)
查看>>
netty源码分析之-处理器详解(9)
查看>>
javascript原型对象存在的问题(3)
查看>>
javascript原型继承(1)
查看>>
javascript原型继承-实现extjs底层继承(2)
查看>>
javascript设计模式-建立接口的方式(1)
查看>>
javascript设计模式-单体singleton模式(2)
查看>>
javascript设计模式-链式编程(3)
查看>>
大型高并发与高可用缓存架构总结
查看>>
javascript设计模式-工厂模式(4)
查看>>
javascript设计模式-组合模式(6)
查看>>
javascript设计模式-门面模式(7)
查看>>
javascript设计模式-享元模式(10)
查看>>
javascript设计模式-代理模式(11)
查看>>
Executor相关源码分析
查看>>
react之setState解析
查看>>
elasticsearch7.3版本已经不需要额外安装中文分词插件了
查看>>
【重大好消息】elasticsearch 7.3版本已经可以免费使用x-pack就可以设置账号和密码了,让你的数据不再裸奔
查看>>
解决使用logstash中jdbc导入mysql中的数据到elasticsearch中tinyint类型被转成布尔型的问题的方法
查看>>