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 相关文章推荐
.Net Core导入千万级数据至Mysql的步骤
May 24 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
SQL基础的查询语句
Nov 11 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
mysql sock 文件解析及作用讲解
Jul 15 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
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
jquery编写日期选择器
2017/03/16 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
Python群发邮件实例代码
2014/01/03 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python heapq使用详解及实例代码
2017/01/25 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
python logging通过json文件配置的步骤
2020/04/27 Python
python 动态绘制爱心的示例
2020/09/27 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
精伦电子Java笔试题
2013/01/16 面试题
费用会计岗位职责
2014/01/01 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Oracle中update和select 关联操作
2022/01/18 Oracle