• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL主从搭建(多主一从)的实现思路与步骤

    背景:

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

    思路:

    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多主一从数据备份的方法教程
    • Centos7 Mysql 5.6 多主一从 解决方案与详细配置
    • MySQL8.0.18配置多主一从
    上一篇:MySQL如何构建数据表索引
    下一篇:MySQL 可扩展设计的基本原则
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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