You've already forked www.colben.cn
update
This commit is contained in:
130
content/post/mariadb-replication.md
Normal file
130
content/post/mariadb-replication.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: "MariaDB 主从复制"
|
||||
date: 2020-04-13T18:00:00+08:00
|
||||
lastmod: 2020-04-13T18:00:00+08:00
|
||||
tags: ["mariadb", "master", "slave", "gtid", "replication", "同步"]
|
||||
categories: ["database"]
|
||||
---
|
||||
|
||||
# 环境
|
||||
- mariadb 主服务器,centos7.8,192.168.1.141
|
||||
- mariadb 主服务器,centos7.8,192.168.1.142
|
||||
- mariadb 从服务器,centos7.8,192.168.1.143
|
||||
- 忽略系统数据库: information_schema, mysql, performance_schema
|
||||
|
||||
# 在两个主服务器上创建用于备份的用户 replicator
|
||||
```sql
|
||||
grant replication slave on *.* to 'replicator'@'%' identified by 'password';
|
||||
flush privileges;
|
||||
```
|
||||
|
||||
# 在两个主服务器上修改 my.cnf
|
||||
```
|
||||
# 唯一 ID
|
||||
# 192.168.1.141 配置
|
||||
server-id = 141
|
||||
# 192.168.1.142 配置
|
||||
server-id = 142
|
||||
read-only = 0
|
||||
|
||||
# binlog
|
||||
# MariaDB 默认已开启 GTID
|
||||
log-bin = /var/lib/mysql-bin/master
|
||||
binlog-format = row
|
||||
sync_binlog = 1
|
||||
expire-logs-days = 3
|
||||
gtid-strict-mode = ON
|
||||
|
||||
# relay log
|
||||
replicate-wild-ignore-table = information_schema.%
|
||||
replicate-wild-ignore-table = init_sql.%
|
||||
replicate-wild-ignore-table = mysql.%
|
||||
replicate-wild-ignore-table = performance_schema.%
|
||||
relay-log = /var/lib/mysql-bin/slave
|
||||
relay-log-recovery = TRUE
|
||||
# 复制线程数不超过 cpu 核数
|
||||
slave-parallel-threads = 4
|
||||
|
||||
# 双主或多主互备时,可能会用到以下配置
|
||||
# 自增主键初始值,与其他互备服务器一致
|
||||
#auto-increment-offset =
|
||||
# 自增主键等差值,与其他互备服务器均不一致
|
||||
#auto-increment-increment =
|
||||
# 该环境中,双主配合 keepalived 实现高可用,无需配置自增
|
||||
```
|
||||
|
||||
# 开启互主同步
|
||||
```sql
|
||||
-- 在 192.168.1.141 上启动 mariadb,配置同步 192.168.1.142:
|
||||
change master to master_host = '192.168.1.142',
|
||||
master_port = 3306,
|
||||
master_user = 'replicator',
|
||||
master_password = 'password',
|
||||
master_use_gtid = slave_pos;
|
||||
|
||||
-- 在 192.168.1.142 上启动 mariadb,配置同步 192.168.1.141:
|
||||
change master to master_host = '192.168.1.141',
|
||||
master_port = 3306,
|
||||
master_user = 'replicator',
|
||||
master_password = 'password',
|
||||
master_use_gtid = slave_pos;
|
||||
```
|
||||
|
||||
# 在两个主服务器上启动 slave ,查看 slave 状态
|
||||
```sql
|
||||
start slave;
|
||||
-- 查看 slave 状态
|
||||
show slave status\G
|
||||
-- 如果看到
|
||||
-- Slave_IO_Running: Yes
|
||||
-- Slave_SQL_Running: Yes
|
||||
-- 则表示 slave 开启成功!
|
||||
```
|
||||
|
||||
# 在从服务器上编辑 my.cnf
|
||||
```
|
||||
# 唯一 ID
|
||||
server-id = 143
|
||||
# 从服务器只做查询,无增删改
|
||||
read-only = 1
|
||||
|
||||
# 忽略的数据表
|
||||
#replicate-ignore-table = db1.t1
|
||||
replicate-wild-ignore-table = information_schema.%
|
||||
replicate-wild-ignore-table = init_sql.%
|
||||
replicate-wild-ignore-table = mysql.%
|
||||
replicate-wild-ignore-table = performance_schema.%
|
||||
relay-log = /var/log/mysql-bin/slave
|
||||
slave-parallel-threads = 4
|
||||
```
|
||||
|
||||
# 开启同步
|
||||
```sql
|
||||
change master 'db141' to master_host = '192.168.1.141',
|
||||
master_port = 3306,
|
||||
master_user = 'replicator',
|
||||
master_password = 'password',
|
||||
master_use_gtid = slave_pos;
|
||||
|
||||
change master 'db142' to master_host = '192.168.1.142',
|
||||
master_port = 3306,
|
||||
master_user = 'replicator',
|
||||
master_password = 'password',
|
||||
master_use_gtid = slave_pos;
|
||||
```
|
||||
|
||||
# 在从服务器上启动 slave ,查看 slave 状态
|
||||
```sql
|
||||
start all slaves;
|
||||
-- 在从服务器上查看 slave 状态
|
||||
show all slaves status\G
|
||||
-- 如果看到
|
||||
-- Slave_IO_Running: Yes
|
||||
-- Slave_SQL_Running: Yes
|
||||
-- 则表示 slave 开启成功!
|
||||
```
|
||||
|
||||
# 参考
|
||||
- [MariaDB 复制](https://mariadb.com/kb/en/standard-replication/)
|
||||
- [MariaDB 多源复制](https://mariadb.com/kb/en/multi-source-replication/)
|
||||
|
Reference in New Issue
Block a user