Mysql8.x主从复制离线部署

概述

Mysql主从复制配置为实现数据库读写分离的基础,主库只写,从库只读,读写写分离可提升系统的吞吐量和稳定性,本文主要介绍一主一从的部署方案,一主多从、多主一从、多主多从的配置可依此类推

环境说明

IP服务操作系统备注
192.168.1.101Mysql8.0.27Centos7.9主库
192.168.1.102Mysql8.0.27Centos7.9从库
# 依次安装基础组件
yum -y install openssl.x86_64 
yum -y install openssl-devel.x86_64 
yum -y install perl.x86_64 
yum -y install perl-devel.x86_64 
yum -y install net-tools

离线安装

主从服务器上安装的步骤一致

Mysql下载

# 定位到指定目录
cd  /data/soft

# 下载安装包(下载慢)
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar

# 查看是否安装 mariadb 
rpm -qa|grep mariadb  

# 删除mariadb,如有则删除,避免不必要的安装问题
# Mariadb也是Mysql之父创建的,为Mysql的一个分支,也是开源的
rpm -e --nodeps mariadb-libs

解压安装

cd /data/soft
tar -xvf mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar

# 解压缩之后,得到以下rpm包
mysql-community-client-8.0.27-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.27-1.el7.x86_64.rpm
mysql-community-common-8.0.27-1.el7.x86_64.rpm
mysql-community-devel-8.0.27-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.27-1.el7.x86_64.rpm
mysql-community-libs-8.0.27-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.27-1.el7.x86_64.rpm
mysql-community-server-8.0.27-1.el7.x86_64.rpm
mysql-community-test-8.0.27-1.el7.x86_64.rpm

# “依次”安装以下rmp文件,如对应的包安装提示缺少基础组件,对应安装上再执行下一步!!!
# “依次”安装以下rmp文件,如对应的包安装提示缺少基础组件,对应安装上再执行下一步!!!
# “依次”安装以下rmp文件,如对应的包安装提示缺少基础组件,对应安装上再执行下一步!!!
rpm  -ivh  mysql-community-common-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-client-plugins-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-libs-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-libs-compat-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-client-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-devel-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-embedded-compat-8.0.27-1.el7.x86_64.rpm
rpm  -ivh  mysql-community-server-8.0.27-1.el7.x86_64.rpm
mysql-community-test-8.0.27-1.el7.x86_64.rpm  #可以不安装!!!

# 执行命令,查看是否安装成功
rpm -qa|grep mysql

Mysql配置

# 创建数据存储文件目录
mkdir -p /data/mysql/{data,bin}

# 文件夹授权
chown -R mysql:mysql /data/mysql

# 修改配置文件
vi /etc/my.cnf

# 修改/新增配置如下
[mysqld]
# 配置数据保存位置
datadir=/data/mysql/data
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 忽略大小写
lower_case_table_names=1
# 允许最大连接数
max_connections=999
#缓存池
innodb_buffer_pool_size=4G
# 脏页占innodb_buffer_pool_size的比例时,触发刷脏页到磁盘
# 25%~50%
innodb_max_dirty_pages_pct=30
# 后台进程最大IO性能指标
# 默认200,如果SSD,调整为5000~20000
innodb_io_capacity=200
#修改默认密码加密方式
default_authentication_plugin=mysql_native_password

启动服务

# 初始化服务
sudo -u mysql mysqld --initialize --console

# 启动服务并设置开机自启
systemctl start mysqld ; systemctl enable mysqld

# 开放端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload

如服务启动不成功,尝试执行 setenforce 0
若可以再关闭selinux,操作:修改/etc/selinux/config文件中设置SELINUX=disabled,然后重启或等待下次重启

用户密码

# 查看临时密码
cat /var/log/mysqld.log |grep root

# 连接数据,输入临时密码
mysql -u root –p

# 修改临时密码,为Nimda123~
alter USER 'root'@'localhost' IDENTIFIED BY 'Nimda123~';

#  刷新权限
FLUSH PRIVILEGES;

主从配置

各个Mysql配置中的server_id须不相同

主库 192.168.1.101

  1. 追加my.cnf配置
# 追加my.cnf配置
vi /etc/my.cnf

# 内容如下
# 配置binlog保存位置,/data/mysql/bin文件夹在离线部署时已创建
log-bin=/data/mysql/bin/mysql-bin
binlog-format=ROW
# MYSQL实例id, 不能重复
server_id=1  
# 修改默认密码加密方式
default_authentication_plugin=mysql_native_password
  1. 重启Mysql
systemctl restart mysqld
  1. 创建专用与同步的账户
# 打开mysql会话
mysql -u root -p  #然后输入秘密
# 创建用于同步的backup账号
CREATE USER 'backup'@'192.168.1.102' IDENTIFIED BY 'Nimda123~';
# 分配权限,指定用户IP
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.102';
# 刷新权限
FLUSH PRIVILEGES;
# 修改密码加密方式
# root账户
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Nimda123~';
# backup账户
ALTER USER 'backup'@'192.168.1.102' IDENTIFIED WITH mysql_native_password BY 'Nimda123~';
  1. 查看binlog文件和位置
show master status;
# 记录bin-log二进制文件,如 mysql-bin.000001
# 记录Position,如156
# 这两个记录是要告诉从库从哪个文件哪个位置开始记录

从库 192.168.1.102

  1. 追加my.cnf配置
# 追加my.cnf配置
vi /etc/my.cnf

# 内容如下
binlog-format=ROW
# MYSQL实例id, 不能重复
server_id=2   
# 设置不同步数据库  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  
#修改默认密码加密方式
default_authentication_plugin=mysql_native_password
  1. 重启Mysql
systemctl restart mysqld
  1. 开启同步
# 打开mysql会话
mysql -u root -p  #然后输入秘密
# 执行同步SQL语句,MASTER_LOG_FILE和MASTER_LOG_POS分别对应着主库的第五步操作
CHANGE MASTER TO
MASTER_HOST='192.168.1.101',MASTER_PORT=3306,MASTER_USER='backup',MASTER_PASSWORD='Nimda123~',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=156,MASTER_CONNECT_RETRY=30;
# 启动slave同步进程
start slave;
# 查看slave状态
show slave status\G;
# Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功
  1. 验证
    在主库中创建一个数据可,查看从库中是否会出现,如果出现则表示配置成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值