画mysql主从拓扑图_部署mysql主从同步

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:22   897   0

部署mysql主从同步

一、什么是mysql主从同步

主:正在被客户端访问的数据库服务器,被称作主库服务器。

从:自动同步主库上的数据的数据库服务器,被称作从库服务器。

二、配置mysql主从同步

2.1 拓扑图

数据库服务器 192.168.4.51 做主库

数据库服务器 192.168.4.52 做从库

2.2 环境准备

主从同步未配置之前,要保证从库上要有主库上的数据。

禁用selinux ]# setenforce 0

关闭防火墙服务]# systemctl stop firewalld

物理连接正常 ]# ping -c 2 192.168.4.51/52

数据库正常运行,管理可以从本机登录

2.3 配置mysql主从同步

+++2.3.1 配置主库

a 创建用户授权

b 启用binlog日志

c 查看正在使用binlog日志信息

+++.3.2 配置从库

a 验证主库的用户授权

b 指定server_id

c 数据库管理员本机登录,指定主数据库服务器的信息

mysql> change master to

-> master_host="主库ip地址",

-> master_user="主库授权用户名",

-> master_password="授权用户密码",

-> master_log_file="主库binlog日志文件名",

-> master_log_pos=binlog日志文件偏移量;

d 启动slave进程

e 查看进程状态信息

相关命令

mysql> show slave status; # 显示从库状态信息

mysql> show master status; #显示本机的binlog日志文件信息

mysql> show processlist; #查看当前数据库服务器上正在执行的程序

mysql> start slave ; #启动slave 进程

mysql> stop slave ; #停止slave 进程

2.4 在客户端测试主从同步配置

2.4.1 在主库服务器上添加访问数据时,使用连接用户

2.4.2 客户端使用主库的授权用户,连接主库服务器,建库表插入记录

2.4.3 在从库本机,使用管理登录查看是否有和主库一样库表记录及授权用户

2.4.4 客户端使用主库的授权用户,连接从库服务器,也可以看到新建的库表及记录

+++++++++++++++++++++++++++++++

三、mysql主从同步的工作原理

从库数据库目录下的文件:

master.info 记录主库信息

主机名-relay-bin.XXXXXX 中继日志文件,记录主库上执行过的sql命令

主机名-relay-bin.index 索引文件,记录当前已有的中继日志文件

relay-log.info 中继日志文件,记录当前使用的中继日志信息

从库IO线程 和SQL线程的作用?

IO线程 把主库binlog日志里的sql命令记录到本机的中继日志文件

SQL线程 执行本机中继日志文件里的sql命令,把数据写进本机。

IO线程报错原因: 从库连接主库失败(ping grant firewalld selinux)

从库指定主库的日志信息错误(日志名 偏移量)

Last_IO_Error: 报错信息

修改步骤:

mysql> stop slave;

mysql> change master to 选项="值";

mysql> start slave;

SQL线程报错原因: 执行本机中继日志文件里的sql命令,用到库或表在本机不存在。

Last_SQL_Error: 报错信息

设置从库暂时不同步主库的数据?

在从库上把slave 进程停止

mysql> stop slave;

把从库恢复成独立的数据库服务器?

]# rm -rf /var/lib/mysql/master.info

]# systemctl restart mysqld

]# rm -rf 主机名-relay-bin.XXXXXX 主机名-relay-bin.index relay-log.info

四、mysql主从同步结构模式

一主一从 一主多从

主从从

主主结构(又称作互为主从)

五、mysql主从同步常用配置参数

主库服务器在配置文件my.cnf 使用的参数

]#vim /etc/my.cnf

[mysqld]

binlog_do_db=库名列表 #只允许同步库Binlog_Ignore_DB=库名列表 #只不允许同步库

]# systemctl restart mysqld

从库服务器在配置文件my.cnf 使用的参数

]# vim /etc/my.cnf

[mysqld]

log_slave_updates

#级联复制

relay_log=中继日志文件名

replicate_do_db=库名列表 #只同步的库

replicate_ignore_db=库名列表 #只不同步的库

:wq

]# systemctl restart mysqld

配置mysql主从从结构

主库 192.168.4.51

从库 192.168.4.52 ( 做51主机从库)

从库 192.168.4.53 ( 做53主机从库)

要求:客户端访问主库51 时 创建库表记录 在52 和53 数据库服务器都可以看到

配置步骤:

一、环境准备

主从同步未配置之前,要保证从库上要有主库上的数据。

禁用selinux ]# setenforce 0

关闭防火墙服务]# systemctl stop firewalld

物理连接正常 ]# ping -c 2 192.168.4.51/52

数据库正常运行,管理可以从本机登录

二、配置主从同步

2.1 配置主库51

用户授权

启用binlog日志

查看正在使用的日志信息

2.2 配置从库52

用户授权

启用binlog日志,指定server_id 和 允许级联复制

查看正在使用的日志信息

验证主库的授权用户

管理员登录指定主库信息

启动slave进程

查看进程状态信息

2.3 配置从库53

验证主库的授权用户

指定server_id

管理员登录指定主库信息

启动slave进程

查看进程状态信息

三、客户端验证配置

3.1 在主库上授权访问gamedb库的用户

3.2 客户端使用授权用户连接主库,建库、表、插入记录

3.3 客户端使用授权用户连接2台从库时,也可以看到主库上新的库表记录

六、mysql主从同步复制模式

异步复制

全同步复制

半同步复制

查看是否可以动态加载模块

mysql> show variables like "have_dynamic_loading";

主库安装的模块

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

从库安装的模块

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

查看系统库下的表,模块是否安装成功

mysql>

SELECT PLUGIN_NAME , PLUGIN_STATUS

FROM INFORMATION_SCHEMA.PLUGINS

WHERE

PLUGIN_NAME LIKE '%semi%';

启用半同步复制模式

主库

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

从库

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

查看半同步复制模式是否启用

mysql> show variables like "rpl_semisync%_enabled";

修改配置文件/etc/my.cnf 让安装模块和启用的模式永久生效。

主库

vim /etc/my.cnf

[mysqld]

plugin-load=rpl_semi_sync_master=semisync_master.so

rpl_semi_sync_master_enabled=1

:wq

从库

vim /etc/my.cnf

[mysqld]

plugin-load=rpl_semi_sync_slave=semisync_slave.so

rpl_semi_sync_slave_enabled=1

:wq

既做主又做从

vim /etc/my.cnf

[mysqld]

plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

rpl-semi-sync-master-enabled = 1

rpl-semi-sync-slave-enabled = 1

:wq

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP