mysql 5.7 实现主从复制

本文详细介绍了如何在Linux环境下安装MySQL 5.7,并配置主从复制。首先通过tar命令解压安装包,设置环境变量,创建用户并初始化数据目录。然后修改配置文件,启动MySQL服务。接着,分别展示了如何设置GTID模式进行主从复制,包括在主库和从库上更改配置、授权、同步数据。同时,强调了时间同步在主从复制中的重要性,并给出了NTP时间同步的配置步骤。最后,提到了数据库备份与导入的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.MySQL(5.7)安装

tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  -C /usr/src/
ln -s /usr/src/mysql-5.7.22-linux-glibc2.12-x86_64/ /usr/local/mysql
echo "export PATH=$PATH:/usr/local/mysql/bin/">> /etc/profile
source /etc/profile
echo $PATH

在这里插入图片描述

useradd -M -s /sbin/nologin mysql
mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data

在这里插入图片描述
记住标红地方,那是初始加密后的密码。一会用到。

cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
 /etc/init.d/mysqld start

启动不起来,修改配置文件

vim /etc/my.cnf

删除重新添加如下内容:
###############################################

[client]
port = 3306
socket = /tmp/mysql.sock
 
[mysqld]
server-id = 2
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data

#################################################

 /etc/init.d/mysqld start
mysql -uroot -p"waC-5a<pyftY"
mysql> set password=password('123123');    // 修改密码
exit
mysql -uroot -p123123

2.从机也如此,安装后配置主从复制

注意配置文件中server-id不能相同

Master主机:

`Vim /etc/my.cnf在这里插入代码片
添加一条
#############################################

[mysqld]
server-id = 2
port = 3306
log-bin=/usr/local/mysql/data/bin-log
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data

##############################################

mysql -uroot -p123123
mysql> grant replication slave on *.* to 'repl'@'192.168.9.10' 
-> identified by '123123';
show master status\G;

在这里插入图片描述

Slave从机:

mysql -uroot -p123123
mysql> change master to master_host='192.168.9.9',
    -> master_user='repl',
    -> master_password='123123',
    -> master_log_file='bin-log.000001',
-> master_log_pos=448;

后两行填入内容为master图片中对应内容。
show slave status\G; 查看

在这里插入图片描述
必须是yes才行,如果不是,请关闭防火墙。

二.基于GTID 主从复制
Master主机:

mysql -uroot -p123123
mysql> show variables like "gtid_mode";

在这里插入图片描述

set global gtid_mode=1;
mysql> show variables like "gtid_mode";

在这里插入图片描述

set global gtid_mode=2;
mysql> show variables like "gtid_mode";

在这里插入图片描述

set global gtid_mode=3;

在这里插入图片描述

mysql> show variables like "enforce_gtid_consistency";

在这里插入图片描述

mysql> set global enforce_gtid_consistency=1;
mysql> show variables like "enforce_gtid_consistency";

在这里插入图片描述

set global gtid_mode=3;
show variables like"gtid_mode";

在这里插入图片描述
Slave 从库:

开启gtid,同上

mysql> set  global gtid_mode=1;
Query OK, 0 rows affected (0.01 sec)

mysql> set  global gtid_mode=2;
Query OK, 0 rows affected (0.03 sec)

mysql> set  global enforce_gtid_consistency=on;
Query OK, 0 rows affected (0.00 sec)

mysql> set  global gtid_mode=3;
Query OK, 0 rows affected (0.02 sec)

mysql> show variables like "gtid_mode";

在这里插入图片描述

mysql> change master to master_host='192.168.9.9',
    -> master_user='repl',
    -> master_password='123123',
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.04 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;

在这里插入图片描述
在这里插入图片描述
最后进行测试即可。
建库删库都行。

show slave status\G;

在这里插入图片描述
注:重启数据库后gtid_mode会变成off,所以可以修改配置文件/etc/my.cnf 。
在这里插入图片描述

 vim /etc/my.cnf

1 [client]
  2 port = 3306
  3 socket = /tmp/mysql.sock
  4 
  5 [mysqld]
  6 server-id = 2
  7 port = 3306
  8 gtid_mode=ON
  9 enforce_gtid_consistency=ON                                         
 10 log-bin=/usr/local/mysql/data/bin-log
 11 basedir = /usr/local/mysql
 12 datadir = /usr/local/mysql/data

在这里插入图片描述

[root@mastre ~]# /etc/init.d/mysqld restart
Shutting down MySQL............ SUCCESS! 
Starting MySQL. SUCCESS! 

在这里插入图片描述

PS:时间同步
1.在MySQL Master上配置NTP时间同步服务器

[root@master ~]# ntpdate cn.pool.ntp.org   //网络好
[root@master ~]# yum -y install ntp 
[root@master ~]# vim /etc/ntp.conf 
最后位置添加:
server 127.127.1.0
fudge 127.127.1.0 stratum 8
[root@master ~]# systemctl enable ntpd   
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@master ~]# systemctl start ntpd   

2.在两个Slave节点上配置与Master进行时间同步

[root@slave1 ~]# yum -y install ntpdate  
[root@slave1 ~]# ntpdate 192.168.9.9  //与主库一致

3.配置MySQL Master服务器

[root@master ~]# vim /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-binlog     
log-slave-updates=true   

4.备份库并导入从库

[root@master ~]#  mysqldump -u root --all-databases > /root/alldbbackup.sql
[root@master ~]# scp /root/alldbbackup.sql root@192.168.9.10:/root/
[root@master ~]# scp /root/alldbbackup.sql root@192.168.9.11:/root/
在MySQL slave上导入Master的备份脚本
[root@slave~]# systemctl start mariadb
[root@slave~]# mysql -u root -p < /root/alldbbackup.sql     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值