mysql部署(2)主从复制

在前面的基础上,现有26、41两个mysql8的实例,下面以26为主41为从搭建主从复制:

|---------------|----|------|----------|----------------|
| 机器 | 主从 | 端口号 | root密码 | 主从复制账号密码 |
| xxx.xx.xxx.26 | 主 | 3306 | Mysql#26 | user1/user1#26 |
| xxx.xx.xxx.41 | 从 | 3306 | Mysql#41 | |

一、master主库配置

1、修改mysql配置文件my.cnf
复制代码
vim /etc/my.cnf

#修改内容如下
#服务器id 此id在主从复制服务器集群中要保持唯一(每台服务器的这值都是唯一的)
server-id=1
#二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
log-bin=mysql-bin
#想要同步的数据库,如果有多个以空格隔开db1 db2 db3 ....
#如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
#binlog-do-db=db_test
#不同步的数据(可以不配置)  如果有多个以空格隔开db1 db2 db3 ....
replicate-ignore-db=mysql,information_schema,sys,performance_schema

此时,my.cnf完整的内容为:

复制代码
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 套接字文件所在目录
socket=/var/lib/mysql/mysql.sock
 
[mysqld]
#主从复制
#服务器id 此id在主从复制服务器集群中要保持唯一(每台服务器的这值都是唯一的)
server-id=1
#二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
log-bin=mysql-bin
#想要同步的数据库,如果有多个以空格隔开db1 db2 db3 ....
#如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
#binlog-do-db=db_test
#不同步的数据(可以不配置)  如果有多个以空格隔开db1 db2 db3 ....
replicate-ignore-db=mysql,information_schema,sys,performance_schema

# 服务端口号,默认为 3306
port=3306
user=root
# 指定 MySQL 数据存放的绝对路径;
datadir=/var/lib/mysql
# socket 文件所在目录
socket=/var/lib/mysql/mysql.sock
# 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用 4 个字节)
character-set-server=utf8mb4
# 设置 client 连接 mysql 时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 允许最大连接数
max_connections=100000
# 是否对 sql 语句大小写敏感,1 表示不敏感
lower_case_table_names=1
# 表示 SQL 模式的参数,通过这个参数可以设置检验 SQL 语句的严格程度
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#导出限制 
secure-file-priv="" 
#事件开启 
event_scheduler=on 
# 关闭通用查询日志
general_log=1
# 通用查询日志存放路径
general_log_file=/var/log/mysql/mysql.log
innodb_data_home_dir=/usr/local/mysql/mysql-8.0/data
# 在事务被提交并写入到表空间磁盘文件上之前,事务数据存储在InnoDB的redo日志文件里
innodb_log_group_home_dir=/usr/local/mysql/mysql-8.0/data/
# 默认为ON,设置为OFF,关闭事务自动提交
autocommit=1
# 默认使用"mysql_native_password"插件认证
#default_authentication_plugin=mysql_native_password
authentication_policy=* 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
2、重启mysql服务

修改配置文件需要重启生效 : systemctl restart mysqld;

3、创建用于主从复制的账号

(1)进入数据库

复制代码
mysql -u root -p #空格输入密码进入mysql数据库

(2)创建用于主从复制的用户user1

复制代码
create user 'user1'@'%' identified with	 mysql_native_password by 'user1#26';

(3)赋予权限

复制代码
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%'WITH GRANT OPTION;

(4)刷新缓存,使配置命令生效

复制代码
flush privileges;

(5)查看master状态(必须)

复制代码
show master status 

记住记录文件名 和 binlog日志偏移量 ,这在后面的从库创建复制命令中是必要的参数!

二、从库配置

1、修改mysql配置文件my.cnf
复制代码
# 添加以下配置
[mysqld]
#[必须]从服务器唯一ID
server-id=2
#[可选]启用中继日志
relay-log=mysql-relay
#[可选] 0(默认)表示读写(主机),1表示只读(从机)
read-only=1 
#[可选] 选择复制的数据库,不填则默认复制主库授权可以复制的数据库
#replicate-do-db=master_db
#[可选] 表示不随着数据库启动而启动复制
#skip-slave-start
2、重启mysql服务

修改配置文件需要重启生效 : systemctl restart mysqld。

相关推荐
数据库急诊室_阿哲29 分钟前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋1 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子2 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T3 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡3 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata3 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__3 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
zhanghaha13144 小时前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
韩曙亮4 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录
瑞雪兆丰年兮4 小时前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web