MySQL主从搭建(多主一从)的实现思路与步骤


Posted in MySQL onMay 13, 2021

背景:

由于最近公司项目好像有点受不住并发压力了,优化迫在眉睫。由于当前系统是单数据库系统原因,能优化的地方也尽力优化了但是数据库瓶颈还是严重限制了项目的并发能力。所以就考虑了添加数据库来增大项目并发能力。

思路:

1: 创建集中库: 主要就是存储历史数据。作为查询使用。

2:创建多个业务库:满足项目高并发的能力。

demo环境:

1: VM ware 虚拟机 - centOS 7

centOS-1: 192.168.194.3 主 100-------业务库

centOS-2: 192.168.194.4 主 200-------业务库

centOS-3: 192.168.194.5 从 300-------相当于集中库

2:mysql 5.7

步骤

1: 主库100

设置my.cnf。

[mysqld]
lower_case_table_names = 1 # 表名不区分大小写
server-id = 100
log_bin = mysql-bin  #开始binlog记录
binlog_format = MIXED 
#每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。
#这样的话,在数据库所在的主机操作系统损坏或者突然掉电的情况下,系统才有可能丢失1个事务的数据
#但是binlog虽然是顺序IO,但是设置sync_binlog=1,多个事务同时提交,
#同样很大的影响MySQL和IO性能。按需设置。
sync_binlog = 1 
# 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days = 7
#binlog_cache_size = 128m
#max_binlog_cache_size = 512m
#max_binlog_size = 256M
# 需要同步库
binlog-do-db = dev
# 不需要同步库
binlog-ignore-db = mysql
binlog_ignore_db = information_schema
binlog_ignore_db = performation_schema
binlog_ignore_db = sys
datadir=/var/lib/mysql

设置slave用户

# mysql -uroot -p 
# password: xxxxxx
# mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'root1234';
# mysql> flush privileges;
# quit;
# systemctl restart mysqld;
# show master status \G
#*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 886
     Binlog_Do_DB: dev
 Binlog_Ignore_DB: mysql,information_schema,performation_schema,sys
Executed_Gtid_Set: 
1 row in set (0.00 sec)

2: 主库200

设置my.cnf。

[mysqld]
lower_case_table_names = 1 # 表名不区分大小写
server-id = 200
log_bin = mysql-bin  #开始binlog记录
binlog_format = MIXED 
#每次事务提交,MySQL都会把binlog刷下去,是最安全但是性能损耗最大的设置。
#这样的话,在数据库所在的主机操作系统损坏或者突然掉电的情况下,系统才有可能丢失1个事务的数据
#但是binlog虽然是顺序IO,但是设置sync_binlog=1,多个事务同时提交,
#同样很大的影响MySQL和IO性能。按需设置。
sync_binlog = 1 
# 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days = 7
#binlog_cache_size = 128m
#max_binlog_cache_size = 512m
#max_binlog_size = 256M
# 需要同步库
binlog-do-db =dev
# 不需要同步库
binlog-ignore-db = mysql
binlog_ignore_db = information_schema
binlog_ignore_db = performation_schema
binlog_ignore_db = sys
datadir=/var/lib/mysql

设置slave用户

# mysql -uroot -p 
# password: xxxxxx
# mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'root1234';
# mysql> flush privileges;
# quit;
# systemctl restart mysqld;
# show master status \G
#*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 154
     Binlog_Do_DB: dev
 Binlog_Ignore_DB: mysql,information_schema,performation_schema,sys
Executed_Gtid_Set: 
1 row in set (0.00 sec)

3: 从库300

设置my.cnf。

[mysqld]
lower_case_table_names = 1 # 表名不区分大小写 
server-id = 300
master_info_repository = table
relay_log_info_repository = table 
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock  
symbolic-links=0 
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

设置主库信息

# mysql -uroot -p 
# password: xxxxxx
# 设置主库信息
# mysql> CHANGE MASTER TO  
# ->MASTER_HOST='192.168.194.3',
# ->MASTER_PORT=3306, MASTER_USER='slave', 
# ->MASTER_PASSWORD='root1234',
# ->MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=886 for channel '100';
# mysql> CHANGE MASTER TO  
# ->MASTER_HOST='192.168.194.4',
# ->MASTER_PORT=3306, MASTER_USER='slave', 
# ->MASTER_PASSWORD='root1234',
# ->MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154  for channel '200';
# 设置主库信息
# mysql> flush privileges;
# start slave;
# mysql>show slave status \G

标识同步成功

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

测试。

随意主库:创建表,插入一条数据。

CREATE TABLE `t_user`  (
  `id` varchar(32) NOT NULL COMMENT '主键ID',
  `name` varchar(32) CHARACTER SET utf8mb4 NULL COMMENT '用户名称',
  `code` varchar(32) CHARACTER SET utf8mb4 NULL COMMENT '用户编码',
  `phone_number` varchar(300) CHARACTER SET utf8mb4 NULL COMMENT '电话号码',
  `create_date` datetime NULL COMMENT '创建时间',
  `update_date` datetime NULL COMMENT '修改时间',
  PRIMARY KEY (`id`)
) COMMENT = '用户信息表';
INSERT INTO t_user (`id`, `name`, `code`, `phone_number`, `create_date`, `update_date`) 
VALUES ('userId_4', '张三', '123456789', '123456789632', '2020-04-27 22:05:00', '2020-04-27 22:05:00');

从库查询

SELECT * FROM t_user;
------+--------+----------+--------------+---------------------+-------------+
| id       | name   | code     | phone_number | create_date  | update_date |
+-------+--------+----------+--------------+---------------------+----------+
| userId_4 | 张三 |123456789|123456789632|2020-04-27 22:05:00|2020-04-27 22:05:00

总结

到此这篇关于MySQL主从搭建(多主一从)的实现思路与步骤的文章就介绍到这了,更多相关MySQL主从搭建内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
MySql学习笔记之事务隔离级别详解
May 12 MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
Mysql数据库索引面试题(程序员基础技能)
May 31 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
MySQL如何构建数据表索引
May 13 #MySQL
MySQL 自定义变量的概念及特点
May 13 #MySQL
为什么mysql字段要使用NOT NULL
MySQL表字段时间设置默认值
May 13 #MySQL
MySql新手入门的基本操作汇总
May 13 #MySQL
MySQL中你可能忽略的COLLATION实例详解
浅谈mysql执行过程以及顺序
You might like
php获取远程图片体积大小的实例
2013/11/12 PHP
php中session与cookie的比较
2015/01/27 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
Python中的引用知识点总结
2019/05/20 Python
对Django url的几种使用方式详解
2019/08/06 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Python接口开发实现步骤详解
2020/04/26 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
甜品店的创业计划书范文
2014/01/02 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
2014年会策划方案
2014/05/11 职场文书
大学生作弊检讨书
2014/09/11 职场文书
大学生见习报告范文
2014/11/03 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python