MySQL主从复制配置

振鹭2年前技术文章1364

一、master服务器配置

1)用户添加及授权

在master 服务器授权一个账户,拥有slave权限

1
2
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'备库ip' IDENTIFIED BY '备库密码';
mysql> FLUSH PRIVILEGES;

2)my.cnf配置修改

修改mysql配置文件,my.ini (windows)或 my.cnf(Linux)找到[mysqld] 标记,下方添加










server-id=1
log-bin=master-bin
binlog-format=ROW
# 以下两个为可选选项,如果要保证数据不丢失最好在清理binlog之前把要清理的日志备份,日志文件的大小根据磁盘的性能做适当的调整
expire_logs_days = 7 // binlog过期清理时间
max_binlog_size = 1G // binlog每个日志文件大小
 
max_connections = 1000
character-set-server = utf8mb4 // 配置字符集
collation-server = utf8mb4_unicode_ci // 配置字符集
// 配置不同步的库
binlog-ignore-db = mysql
binlog-ignore-db = sys
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema

3) 重启master 的mysql服务


systemctl restart mysqld

二、备库配置

在另一个mysql上配置从服务器

1) 备库my.cnf修改

找到my.ini (windows) 或 my.cnf (linux),找到[mysqld]标记,更改如下配置


[mysqld]
max_connections = 1000
log_bin = slave-bin
server_id = 2
relay_log = slave-relay-bin
log_slave_updates = 1
read_only = 1
#以下两个为可选选项,如果要保证数据不丢失最好在清理binlog之前把要清理的日志备份,日志文件的大小根据磁盘的性能做适当的调整
expire_logs_days = 7 //binlog过期清理时间
max_binlog_size = 100m //binlog每个日志文件大小
 
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys

重启mysql使配置生效


systemctl restart mysqld

三、开启复制

1)查看主库binlog信息

登陆主库执行


mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      154 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

执行之后可以获取目前主库binlog使用的文件及pos点  

2)在从库上设置复制信息

根据上一步获取到的信息(Position, File)配置从库的复制信息,在从库上执行如下命令


CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_USER='repl',MASTER_PASSWORD='主库密码',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=154;

3)在从库上开启复制

从库复制信息配置完成后执行命令开启复制:
mysql> start slave;

4)查看复制状态

启动之后如果不报错即可执行如下命令查看复制的状态:
show slave status \G;

主要查看下面两个参数状态,只要都是yes,表示主从通信正常。
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
如果均为yes则正常,否则需根据last_error信息进行调试


相关文章

Kubernetes安全--基于sa和user的rbac认证机制

前言Kubernetes中的用户K8S中有两种用户(User)——服务账号(ServiceAccount)和普通意义上的用户(User)ServiceAccount是由K8S管理的,而User通常是在...

K8S中 CNI 插件的解读

K8S中 CNI 插件的解读

一.CNI是什么首先我们介绍一下什么是 CNI,它的全称是 Container Network Interface,即容器网络的 API 接口。它是 K8s 中标准的一个调用网络实现的接口。Kubel...

MySQL keepalived配置(一)

一、MySQL数据初始化1.1、创建ha元数据结构:create database myha;  use myha;CREATE TABLE `ha_conf` ( `id` int(11) NOT...

SQL Server优化入门系列(二)—— 等待事件

SQL Server优化入门系列(二)—— 等待事件

在上一篇文章中(SQL Server优化入门系列(一)——快速定位阻塞SQL),我们介绍了如何快速定位SQL Server中当前正在执行的SQL,以及被阻塞的SQL。这里,我们将介绍如何通过等待事件来...

DBeaver连接Trino

DBeaver连接Trino

1、背景trino 开启https,需要通过dbeaver进行连接DBeaver版本:21.2.02、解决办法下载安装dbeaver打开选择选择trino填写主机如果trino开启https,则可以使...

ES运维(一)底层数据存储原理

ES运维(一)底层数据存储原理

1、ES底层数据存储原理架构图Segment工作流程:A、 新的文档在内存中组织B、 每隔一段时间,buffer将会被提交:生成一个新的segment(一个额外的新的倒序索引)并被写到磁盘,同时一个新...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。