MySQL8 手动配置主从同步 数据库高可用 如此简单

环境情况:

主库:172.16.55.193:3308

# my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
default-time-zone='+08:00'
max_allowed_packet=500M
max_connections=10000
expire_logs_days=5

innodb_buffer_pool_size=1073741824
temptable_max_mmap=10737418240

server_id=10

gtid_mode=0
enforce-gtid-consistency=0
enforce_gtid_consistency=0
binlog_gtid_simple_recovery=0

从库:172.16.180.100:3308

# my.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
default-time-zone='+08:00'
max_allowed_packet=500M
max_connections=10000
expire_logs_days=1

innodb_buffer_pool_size=1073741824
temptable_max_mmap=10737418240

server_id=20

# 从库做好之后打开
# read_only = 1
# super_read_only = 1

gtid_mode=0
enforce_gtid_consistency=0
binlog_gtid_simple_recovery=0

一、主库操作:

备份数据库:

mysqldump  -uroot -pxxxx -h172.16.55.193 -P3307  --all-databases --source-data=2 --single-transaction --triggers --routines --events --hex-blob --flush-logs >  alldb.sql

选项说明:

  1. -uroot:指定数据库的用户名,这里是 root 用户。
  2. -pxxxx:指定 root 用户的密码,这里 xxxx 代表密码(实际使用时要替换为密码)。
  3. -h172.16.55.193:指定 MySQL 数据库服务器的 IP 地址为 172.16.55.193
  4. -P3307:指定 MySQL 数据库服务的端口号为 3307
  5. --all-databases:表示备份所有数据库,而不仅仅是特定的数据库。
  6. --source-data=2:这通常用于指示 mysqldump 如何处理源数据(如如何处理长时间运行的查询)。在此例中,它可能是某个特定选项,但它并不常见,具体功能可参考文档。
  7. --single-transaction:在执行备份时,使用一个单独的事务进行备份。这可以确保数据一致性,并避免在备份期间进行修改操作,通常用于 InnoDB 存储引擎的表。
  8. --triggers:包括数据库中的触发器(Triggers)在备份文件中。
  9. --routines:包括存储过程(Stored Procedures)和存储函数(Stored Functions)在备份文件中。
  10. --events:包括事件调度程序(Event Scheduler)中的事件。
  11. --hex-blob:使 mysqldump 将二进制大对象(BLOB)类型的数据以十六进制格式导出,以避免乱码或编码问题。
  12. --flush-logs:备份之前,刷新 MySQL 的日志文件,生成一个新的日志文件。这对审计和日志管理非常有用。

二、恢复从库:

mysql -h172.16.180.100 -P 3308 -pxxxx < alldb.sql -f

三、主从配置

查看备份文件 记录数据

less alldb.sql

记录下面两个值:

MASTER_LOG_FILE='binlog.000033'

MASTER_LOG_POS=197

拼接从库用于连接主库的sql

# 连接主库
change master to
master_host='172.16.55.193',
master_user='root',
master_password='xxxx',
master_port=3308,
master_log_file='binlog.000033',
master_log_pos=197;

# 启动从库
start slave;

# 查看从库状态
show slave status \G

这样从库就配置好了

接下来再把前面my.cnf里的 read only 开起来即可

read_only = 1
super_read_only = 1

配置数据库高可用,可见我另一篇文档:

通过ProxySQL实现MySQL读写分离_docker proxysql-优快云博客文章浏览阅读988次,点赞10次,收藏10次。ProxySQL 是一个高性能、面向 MySQL 协议的代理服务器,用于 MySQL、MariaDB 服务器的读写分离、负载均衡、故障转移和查询路由。_docker proxysqlhttps://blog.youkuaiyun.com/id_is_null/article/details/138902864

原创内容  未经允许  禁止转载

原创内容  未经允许  禁止转载

原创内容  未经允许  禁止转载

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值