Mysql 一主多从的部署


Posted in MySQL onMay 20, 2022

1.下载地址

https://dev.mysql.com/downloads/mysql/

2.下载tar.gz包

选择redhat版本

Mysql 一主多从的部署

Mysql 一主多从的部署

3.安装

1.linux系统上创建mysql1用户

useradd mysql1

2.将tar.gz包上传到服务器上并且解压

tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

3.将mysql-5.7.31-el7-x86_64目录下的文件mv到 /home/mysql1下

4.mkdir -p /home/mysql1/data 文件存储mysql1数据目录

mkdir -p /home/mysql1/data

5.将/etc/my.cfg文件复制到mysql家目录下

cp /etc/my.cnf /home/mysql1/

6.对/home/mysql1下赋权

chmod -R 755 /home/mysq1l
chown mysql:mysql -R /home/mysql1/data
chmod 777 /home/mysql1/data

7.修改mysql配置文件

vi /home/mysql1/my.cnf

[mysqld]
user                            = 
port                            = 3307
basedir                         = /home/mysql1
datadir                         = /home/mysql1/data
socket                          = /home/mysql1/mysql.sock
pid_file                        = /home/mysql1/mysql.pid
log_error                       = /home/mysql1/data/error.log
#binlog日志文件
log_bin                         = /home/mysql1/data/mysql-bin
relay_log                       = /home/mysql1/data/relay-bin
slow_query_log_file             = /home/mysql1/data/slow.log
#binlog过期清理时间
expire_logs_days                = 15
log-slave-updates               = 1
log_bin_trust_function_creators = 1
lower_case_table_names          = 1
max_connections                 = 3000
max_connect_errors              = 1000000 
# 每个实例的id都设置成不一样的,比如a主机,3307 b主机设置成23307,c主机设置成33307,后面1主2从会用到
server-id                       = 3307                              
autocommit                      = 1
# pool_size根据实际情况进行更新
innodb_buffer_pool_size         = 40G
innodb_buffer_pool_instances    = 8
innodb_write_io_threads         = 16
innodb_read_io_threads          = 16
#mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED
binlog_format                   = ROW
gtid_mode                       = on
enforce_gtid_consistency        = 1
innodb_flush_log_at_trx_commit  = 1  
#add 2                          
innodb_thread_concurrency       = 20
innodb_print_all_deadlocks      = 1
innodb_flush_method             = O_DIRECT
innodb_io_capacity              = 8000
innodb_io_capacity_max          = 15000
enforce_gtid_consistency        = 1
binlog_rows_query_log_events    = 1
character_set_server            = utf8mb4
default-storage-engine          = INNODB
transaction_isolation           = READ-COMMITTED
max_allowed_packet              = 67108864
event_scheduler                 = 1
slow_query_log                  = on
explicit_defaults_for_timestamp = 1   
master_info_repository          = TABLE
relay_log_info_repository       = TABLE
relay_log_recovery              = 1
relay_log_purge                 = 0  
slave_rows_search_algorithms    = 'INDEX_SCAN,HASH_SCAN'
slave_parallel_type             = LOGICAL_CLOCK
slave_parallel_workers          = 16
slave_preserve_commit_order     = 1
slave_transaction_retries       = 64
sync_relay_log                  = 0
sync_relay_log_info             = 0
sync_master_info                = 0
sync_binlog                     = 1
collation_server                = utf8mb4_bin
skip_name_resolve               = 1 
plugin-load                     = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled    = 1
rpl-semi-sync-slave-enabled     = 1

8.数据文件初始化

1.初始化

./mysqld --defaults-file=/home/mysql1/my.cnf --initialize --basedir=/home/mysql1 --datadir=/home/mysql1/data --user=mysql1

2.启动

./mysqld_safe --defaults-file=/home/mysql1/my.cnf --user=mysql1 &

查看mysql进程已经起来,并且监听3307接口

Mysql 一主多从的部署

3.本机登陆,root的初始密码可以在errorlog中找到

cat error.log | grep "temporary password"

Mysql 一主多从的部署

4.本机登录指定sock文件以及指定端口及输入临时密码

./mysql -uroot -P3307 -S /home/mysql1/mysql.sock -p

5. 登录后修改root密码

set password=password('XXXXXXXX'); 修改密码
flush privileges;

6. 赋予权限

grant all privileges on *.* to 'root'@'%' identified by 'XXXXXXX' with grant option;
flush privileges;

7. 停止服务

./mysqladmin shutdown -uroot -p******** -S /home/mysql1/mysql.sock

4.使用mysql客户端datagrip连接mysql成功

Mysql 一主多从的部署

5.通过如上相同操作安装从库,只修改配置文件相关信息,并且初始化,并且客户端连接

Mysql 一主多从的部署

6.在master数据库上执行

1.创建repl用户并且赋予同步权限

CREATE USER 'repl' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by 'slavepass';
flush privileges;

Mysql 一主多从的部署

2.查看master状态

SHOW MASTER STATUS\G;

Mysql 一主多从的部署

7.在slave上面执行

1.配置slave从节点的master节点以及binlog偏移位置等

CHANGE MASTER TO MASTER_HOST='master地址',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000003', #为master的log_file
MASTER_LOG_POS=1597,       #master的POS
MASTER_PORT=3307;

Mysql 一主多从的部署

2.启动slave同步进程以及查看slave状态

start slave;  #启动slave同步进程
show slave status\G;

Mysql 一主多从的部署

8.测试

在mysql1中创建testdb,使用datagrip在mysql2中即可查看从mysql1中同步的新增的库以及数据,不过datagrip需要刷新下客户端。

Mysql 一主多从的部署

9.总结主从部署

注意主从mysql的my.cnf配置文件的server-id必须配置不一样

到此这篇关于Mysql一主多从部署的实现步骤的文章就介绍到这了!

MySQL 相关文章推荐
MySQL大小写敏感的注意事项
May 24 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
MySQL子查询中order by不生效问题的解决方法
Aug 02 MySQL
浅谈MySQL函数
Oct 05 MySQL
mysql事务隔离级别详情
Oct 24 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
mysql性能优化以及配置连接参数设置
May 06 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
SQL Server数据库的三种创建方法汇总
May 08 MySQL
mysql 排序失效
May 20 #MySQL
MySQL 自动填充 create_time 和 update_time
May 20 #MySQL
MySQL数据库 任意ip连接方法
May 20 #MySQL
MySQL GTID复制的具体使用
May 20 #MySQL
单机多实例部署 MySQL8.0.20
May 15 #MySQL
MySQL中的全表扫描和索引树扫描
MySQL sql模式设置引起的问题
May 15 #MySQL
You might like
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
PHP.vs.JAVA
2016/04/29 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
基于Django用户认证系统详解
2018/02/21 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
python实现五子棋小游戏
2020/03/25 Python
Python中最大递归深度值的探讨
2019/03/05 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
一个C/C++编程面试题
2013/11/10 面试题
出国导师推荐信
2014/01/16 职场文书
医学生自我评价
2014/01/27 职场文书
单位委托书怎么写
2014/08/02 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
社团个人总结范文
2015/03/05 职场文书