Linux mysql8.X实现互为主从详细配置以及离线安装并相关部署

4 篇文章 0 订阅
3 篇文章 0 订阅

Linux mysql8.X实现互为主从详细配置以及离线安装并相关部署

首先肯定是两台均安装mysql,最详细的安装步骤请跳转连接:

https://blog.csdn.net/a201206440/article/details/114218623

1、linux环境:

服务器01:172.25.58.244 mysql版本:8.0.23 //既是主mysql也是从mysql
服务器02:172.25.58.246 mysql版本:8.0.23 //既是主mysql也是从mysql

2、配置两台服务器的mysql相关配置

1、两台服务器均需要执行命令,创建一些基础文件

//1、两台服务器均需要执行命令,创建一些基础文件
[root@wqy /] mkdir -p /data/mysql/data/logs/mysqlbin
[root@wqy /] touch /data/mysql/data/logs/mysqld.log
[root@wqy /] touch /data/mysql/data/logs/mysqld.pid

2、服务器01:172.25.58.244 配置my.cnf

//2、服务器01:172.25.58.244 配置my.cnf
[root@wqy / ] vim /etc/my.cnf
[mysqld]
skip-name-resolve
#设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
#设置mysql数据库的数据的存放目录
datadir=/data/mysql/data
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#此处是区分大写的,但是mysql8只有在初始化时设置lower_case_table_names=1才有效
lower_case_table_names=1
max_allowed_packet=16M
#相对于原来的my.cnf,【互为主从配置需要新增以下内容】
#步骤一中的创建文件路径/data/mysql/data/logs/mysqld.log和/data/mysql/data/logs/mysqld.pid
log-error=/data/mysql/data/logs/mysqld.log
pid-file=/data/mysql/data/logs/mysqld.pid
# 同一局域网内唯一id,唯一id确定方法:mysql -uroot -p密码,show variables like 'server_id';不与其查询到的id重复即可
server-id=11012
# 开启二进制日志功能,日志存储路径,步骤一中的创建文件路径/data/mysql/data/logs/mysqlbin加上/mysql-bin
log-bin=/data/mysql/data/logs/mysqlbin/mysql-bin

3、服务器01:172.25.58.246 配置my.cnf

//3、服务器01:172.25.58.246 配置my.cnf
[root@wqy / ] vim /etc/my.cnf
[mysqld]
skip-name-resolve
#设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
#设置mysql数据库的数据的存放目录
datadir=/data/mysql/data
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#此处是区分大写的,但是mysql8只有在初始化时设置lower_case_table_names=1才有效
lower_case_table_names=1
max_allowed_packet=16M
#相对于原来的my.cnf,【互为主从配置需要新增以下内容】
#步骤一中的创建文件路径/data/mysql/data/logs/mysqld.log和/data/mysql/data/logs/mysqld.pid
log-error=/data/mysql/data/logs/mysqld.log
pid-file=/data/mysql/data/logs/mysqld.pid
# 同一局域网内唯一id,唯一id确定方法:mysql -uroot -p密码,show variables like 'server_id';不与其查询到的id重复即可
server-id=11012
# 开启二进制日志功能,日志存储路径,步骤一中的创建文件路径/data/mysql/data/logs/mysqlbin加上/mysql-bin
log-bin=/data/mysql/data/logs/mysqlbin/mysql-bin

4、重启两个mysql服务,使配置文件生效

//重启方式很多,不一定是要我这种,我只是习惯了这种方式而已
[root@wqy /]# cd /usr/local/mysql/support-files
[root@wqy support-files]# ./mysql.server stop
[root@wqy support-files]# ./mysql.server start
//验证是否启动
[root@wqy support-files]# mysql -uroot -p123456

5、配置同步策略

//重要:两台服务器均创建数据同步用户,均执行以下命令
//登录数据库
[root@wqy support-files]# mysql -uroot -p123456
//创建用户slave
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
//给用户授权
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
mysql> grant all on . to ‘slave’@’%;
//刷新权限
mysql> flush privileges;
//查看master的状态,并记录File和Position的值
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 158      |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
//关闭主从服务slave
mysql> stop slave;
//创建主从关键步骤,两个服务器要区分执行
//master_host :主服务的地址,本例中:246服务器是244的主服务,同时244服务器也是246的主服务,所以需要两台服务器都需要执行指令,指令内容选则各自的主服务器
//master_port:主服务的端口号
//master_user:用于数据同步的用户
//master_password:用于同步的用户的密码
//master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
//master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
//master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
//服务器01:172.25.58.244执行
mysql> change master to master_host='172.25.58.246', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 158, master_connect_retry=30;
//服务器02:172.25.58.246执行
mysql> change master to master_host='172.25.58.244', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 158, master_connect_retry=30;
//开启主从复制:
mysql> start slave;
//查看同步状态:SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启,如果有一个死活开启不成功,继续向下看第三大步。如下图
mysql> show slave status \G;

在这里插入图片描述

3、 出现主库与从库不同步情况,主从同步停止

在mysql主从同步的过程中,可能会因为各种原因出现主库与从库不同步的情况, 其中查看状态: show slave status \G;发现SlaveIORunning 和 SlaveSQLRunning 并不都是yes,这时候问题彻底解决方案:备份数据,重置主从服务配置!!

//1、登录数据库
[root@wqy support-files]# mysql -uroot -p123456
//2、停止slave服务
mysql> stop slave;
//3、对主服务器进行加锁,本例子中需要对两台服务器均加锁,因为均是主服务也是从服务
mysql> flush tables with read lock;
//4、备份主服务器数据,本例中随便备份一份数据即可,如果是新的服务则没必要备份数据,直接忽略4、7步
mysql> 数据的备份不做赘述
//5.重置master服务
mysql> reset master;
//6.对master服务器的数据库解锁
mysql> unlock tables;
//7.将备份的数据分别导入服务器
mysql> 备份导入不做赘述;
//8.重置slave服务,RESET SLAVE将清除slave上的同步位置,删除所有旧的同步日志,使用新的日志重新开始,这正是我们想要的。需要注意的是,必须先停止slave服务(STOP SLAVE),我们已经在第2步停止了它。
mysql> reset slave;
//开启slave服务
mysql> start slave;
//检查同步状态,一切正常,SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启。
mysql> show slave status \G; 

两台均安装mysql,最详细的安装步骤请跳转连接:

https://blog.csdn.net/a201206440/article/details/114218623

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值