美文网首页
MySQL主从搭建(多主一从)

MySQL主从搭建(多主一从)

作者: Bertram_Wang | 来源:发表于2020-04-28 00:00 被阅读0次

背景:

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

思路:

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主从复制环境构建至少需2台服务器,可以配置1主多从,多主多从等 主从版本尽量一致,...

  • MySQL主从搭建(多主一从)

    背景: 由于最近公司项目好像有点受不住并发压力了,优化迫在眉睫。由于当前系统是单数据库系统原因,能优化的地方也尽力...

  • MySQL主从介绍、配置主、配置从、测试主从同步

    MySQL主从介绍MySQL主从介绍 配置主 配置主 配置从 配置从 测试主从同步 测试主从同步

  • 23-MYSQL数据库(三)

    MySQL复制 一主一从 一主多从 主从复制原理 MySQL垂直分区 MySQL水平分片(Sharding) 对应...

  • MySQL学习日记(十)-主从同步

    主从形式 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的; ...

  • MySQL主从介绍、准备工作、配置主、配置从、测试主从同步

    目录 一、MySQL主从介绍二、准备工作三、配置主四、配置从五、测试主从同步 一、MySQL主从介绍 MySQL主...

  • redis主从集群搭建

    今天我们介绍redis的主从集群搭建方式。 redis主从搭建方式一般为一主多从的形式,即一台主数据库,多台从数据...

  • 2019-10-12

    利用LVS+Keepalived搭建Mysql双主复制高可用负载均衡环境 应用背景: MySQL复制(主主,主从....

  • mysql 主从复制部署

    1 ) mysql 主从复制 (实时与异步,一主多从,一主一从) 备注:单向策略;主从本身就是一种备份,一般从...

  • ubuntu系统下的mysql主从

    流程:1.使登陆用户为root2.接受远程连接3.mysql主从搭建 mysql主从搭建流程:1.修改主配置文件(...

网友评论

      本文标题:MySQL主从搭建(多主一从)

      本文链接:https://www.haomeiwen.com/subject/heipwhtx.html