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中VARCHAR与CHAR格式数据的区别
May 26 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
解决MySQL Varchar 类型尾部空格的问题
Apr 06 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 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 快速生成 Flash 动画的方法
2007/03/06 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
jquery简单体验
2007/01/10 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python如何判断数独是否合法
2016/09/08 Python
pandas带有重复索引操作方法
2018/06/08 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
python如何绘制疫情图
2020/09/16 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
公司市场部岗位职责
2013/12/02 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
优秀员工获奖感言
2014/03/01 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers