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知识点整理
Apr 05 MySQL
MySQL 查询速度慢的原因
May 25 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
浅谈MySQL next-key lock 加锁范围
Jun 07 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 MySQL
MySQL分库分表详情
Sep 25 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
Mar 03 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 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的宝库目录--PEAR
2006/10/09 PHP
动态生成gif格式的图像要注意?
2006/10/09 PHP
PHP XML数据解析代码
2010/05/26 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
php的常量和变量实例详解
2017/06/27 PHP
JS控制层作圆周运动的方法
2016/06/20 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
Python正则表达式常用函数总结
2017/06/24 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Django实现跨域的2种方法
2019/07/31 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
自荐信范文
2013/12/10 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
村党支部公开承诺书
2014/05/29 职场文书
信息管理专业自荐书
2014/06/05 职场文书
会计人员岗位职责
2015/02/03 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
win7配置本地ftp服务器的图文教程
2022/08/05 Servers
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL