MySql主从同步的配置

该文详细介绍了如何配置MySQL数据库的主从同步,包括选择主服务器、备份数据库、安装从库、配置主从库的服务器ID、授权同步用户、设置日志文件和指针位置,以及在从库上启动同步和设置只读用户。此外,还提到了日志保留策略和部分库表的同步配置优化。
摘要由CSDN通过智能技术生成

一. 准备工作

1. 选择一个服务器当做主服务器,将服务器上需要用到的数据库进行备份.

2 .安装从库的 MySql,需要与主服务器的版本保持一致(此次用的数据库安装包是 mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz).

3 .将主服务器上的数据同步到从库中.(主从同步只会同步创建同步之后的数据操作,对于原有的数据不会同步)

二.配置主数据库

(1).修改配置文件

vim /etc/my.cnf
添加配置
[mysqld]
log-bin=mysql-bin
server-id=1

(2).重启 mysql 服务(CentOS 7.9)

service mysql restart

使用命令行以 root 用户进入 MySQL

mysql -u root -p

输入密码,进入

(3).创建拥有从节点同步权限的用户

GRANT REPLICATION SLAVE ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';
其中 userName 为用户名,yourPassword 为密码
刷新权限
FLUSH PRIVILEGES;
查询主库状态
show master status;

记录下 File ,Position 字段的值

其中 File 为操作日志文件,Position 为指针位置,这两个字段是数据同步的关键

三.配置从数据库

(1).修改从数据库配置文件

vim /etc/my.cnf
[mysqld]
server-id=2

注意: 每一个服务器的 server-id 都不能重复

重启 mysql 服务(CentOS 7.9)

service mysql restart

(2).使用命令行以 root 用户进入 MySQL

mysql -u root -p

输入密码,进入

执行同步语句

CHANGE MASTER TO MASTER_HOST='masterServerIp', MASTER_PORT=masterPort, MASTER_USER='masterUser', MASTER_PASSWORD='masterPassword', MASTER_LOG_FILE='masterLogFile', MASTER_LOG_POS=masterPosition;

其中 masterServerIp:为主库服务器地址(ip或域名)

masterPort:为主库 mysql 端口(需要确保外网可访问)

masterUser:为刚创建的用于向从库同步数据的用户

masterPassword:为刚创建的用于向从库同步数据的用户密码

masterLogFile:为主库的日志文件名,对应字段 File

masterPosition:为主库指针位置,对应字段 Position

(3).启动从库同步

start slave;

查询从库同步状态

show slave status\G;

主要关注字段: Slave_IO_Running,Slave_SQL_Running,这两个字段值为 Yes 则从库同步状态良好

至此,数据库同步的配置已经基本完成

四. 从库设置只读用户

登录从库,添加只读用户

GRANT SELECT ON *.* TO 'userName'@'%' IDENTIFIED BY 'yourPassword';

其中 userName 为数据库用户名,yourPassword 为用户密码

刷新权限

FLUSH PRIVILEGES;

在连接从库时使用只读用户.

五.优化点

(1).mysql日志保留策略:设置binlog日志保存天数,文件大下限制

查看当前binlog保留时长,文件大下限制

查看binlog的保留时长[expire_logs_days]

0表示永久保留

mysql> show variables like 'expire_logs_days';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| expire_logs_days | 0 |

+------------------+-------+

1 row in set (0.00 sec)

(2).查看binlog的文件大小限制[max_binlog_size]

1073741824

mysql> show variables like 'max_binlog_size';

+-----------------+------------+

| Variable_name | Value |

+-----------------+------------+

| max_binlog_size | 1073741824 |

+-----------------+------------+

1 row in set (0.01 sec)

————————————————

(3).全库同步与部分同步

我们目前配置的主从同步是针对全库配置的,而实际环境中,一般并不需要针对全库做备份,而只需要对一些特别重要的库或者表来进行同步。那如何针对库和表做同步配置呢?如下所示

首先在Master端:

在my.cnf中,可以通过以下这些属性指定需要针对哪些库或者哪些表记录binlog

需要同步的二进制数据库名

binlog-do-db=testdemo

只保留7天的二进制日志,以防磁盘被日志占满(可选)

expire-logs-days = 7

不备份的数据库

binlog-ignore-db=information_schema

binlog-ignore-db=performation_schema

binlog-ignore-db=sys

然后在Slave端:在my.cnf中,需要配置备份库与主服务的库的对应关系.

如果salve库名称与master库名相同,使用本配置

replicate-do-db = testdemo

如果master库名[testdemo]与salve库名[testdemo01]不同,使用以下配置[需要做映射]

replicate-rewrite-db = testdemo -> testdemo01

如果不是要全部同步[默认全部同步],则指定需要同步的表:

replicate-wild-do-table=testdemo.user

replicate-wild-do-table=testdemo.demotable

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值