Mysql主从数据库(异步复制)

本文详细介绍Mysql数据库主从复制的部署步骤,包括主库和从库的配置过程,以及如何验证复制的成功。

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

一.Mysql数据库主从复制的部署

1.配置server1(主库)
<1>下载mysql5.7安装包,并解压

[root@server1 ~]# ls
anaconda-ks.cfg  anaconda-screenshots  mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
[root@server1 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 
[root@server1 ~]# ls
anaconda-ks.cfg
anaconda-screenshots
mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
mysql-community-client-5.7.24-1.el7.x86_64.rpm
mysql-community-common-5.7.24-1.el7.x86_64.rpm
mysql-community-devel-5.7.24-1.el7.x86_64.rpm
mysql-community-embedded-5.7.24-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-5.7.24-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.24-1.el7.x86_64.rpm
mysql-community-server-5.7.24-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.24-1.el7.x86_64.rpm
mysql-community-test-5.7.24-1.el7.x86_64.rpm

在这里插入图片描述
<2>安装需要的软件包,即安装mysql服务

[root@server1 ~]# yum install mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm -y

在这里插入图片描述
<3>编辑mysql的主配置文件/etc/my.cnf
其中log-bin对应的日志名随便给;server-id对应的数字也随便给,只是一般从1开始。

[root@server1 ~]# vim /etc/my.cnf       #在最后写入
log-bin=mysql-bin           #启动mysql二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句
server-id=1                 #服务器唯一标识

<4>开启数据库,查看原始密码

[root@server1 ~]# systemctl start mysqld
[root@server1 ~]# cat /var/log/mysqld.log | grep password
2019-02-23T09:47:17.484306Z 1 [Note] A temporary password is generated for root@localhost: neDdrHP#w2GE     #这个密码不能忘记,后面安全初始化时还需要这个密码

在这里插入图片描述
<4>开启数据库,查看原始密码

[root@server1 ~]# systemctl start mysqld
[root@server1 ~]# cat /var/log/mysqld.log | grep password
2019-02-23T09:47:17.484306Z 1 [Note] A temporary password is generated for root@localhost: neDdrHP#w2GE     #这个密码不能忘记,后面安全初始化时还需要这个密码

在这里插入图片描述
<5>进行数据库安全初始化(登陆密码为查看到的原始密码)——如果不进行初始化,进入数据库是不能进行任何操作的,所以要进行安全初始化。

[root@server1 ~]# mysql_secure_installation    #修改密码
#注意这里设置新密码时,密码是有要求的,要求为:数字+大小写字母+特殊字符,且超过8位。这是因为该数据库版本开启了密码检测插件,密码太过简单会报错。
#第一个选项敲回车,其余选项全都敲y

在这里插入图片描述
<6>以root用户及刚刚安全初始化设置的密码,登陆数据库

[root@server1 ~]# mysql -uroot -p
mysql> SHOW DATABASES;             #可以查看,表示设置成功。
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |

在这里插入图片描述
<7>创建有复制权限的帐号,并查看该帐号是否创建成功。

mysql>  grant replication slave on *.* to 'xin'@'172.25.83.%' identified by 'Xinjiaojiao+523';         #可创建从数据库的masterbackup用户和权限,密码为Xinjiaojiao+523。
##*.*表示所有数据库的所有表。
##172.25.83.%表示172.25.83网段,即0-255的IP都可以访问主服务器,正式环境请配置指定从服务器IP。
##若将172.25.83.%该为%,则表示任何IP均可作为从数据库来访问主服务器。
mysql> select Host,User from mysql.user;

在这里插入图片描述
<8>查看主库状态:可以看到当前记录日志的日志文件名和Position号。

也可以查看主机的日志,主机的server-id,主机的二进制日志是否开启

[root@server1 ~]# mysql -uroot -pXinjiaojiao+523
mysql> show master status;     #查看主库的状态
mysql> show master logs;       #查看主机的日志
mysql> show variables like '%server%';    #查看本机的server-id
mysql> show variables like '%log%';       #查看本机的二进制日志是否开启

2.配置server2(从库)
<1>从主库拷贝需要的安装包,并安装,即安装mysql服务

[root@server1 ~]# scp mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm root@172.25.83.2:
[root@server2 ~]# yum install mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm -y

在这里插入图片描述
<2>编辑/etc/my.cnf文件

[root@server2 ~]# vim /etc/my.cnf       #在最后一行写入
server-id=2                #服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。

<3>开启数据库,查看原始密码,并进行数据库安全初始化(登陆密码为查看到的原始密码)

[root@server2 ~]# systemctl start mysqld
[root@server2 ~]# grep password /var/log/mysqld.log 
2019-02-23T10:25:53.276708Z 1 [Note] A temporary password is generated for root@localhost: s4iN5wdS!iB>
[root@server2 ~]# mysql_secure_installation     

在这里插入图片描述
<5>设定从库,将主库与从库连接起来,并开启从库

[root@server2 mysql]# mysql -uroot -pXinjiaojiao+623
mysql> change master to master_host='172.25.83.1',master_user='xin',master_password='Xinjiaojiao+523',master_log_file='mysql-bin.000001',master_log_pos=451;
mysql> start slave;

在这里插入图片描述
<6>查看从库状态
也可以查看主机的server-id,主机的二进制日志是否开启

[root@server2 ~]# mysql -uroot -p    #以从库的密码登录从库
mysql> show slave status\G;
mysql> show variables like '%server%';    #查看本机的server-id
mysql> show variables like '%log%';       #查看本机的二进制日志是否打开

在这里插入图片描述
如果Slave_IO_Running和Slave_SQL_Running都为yes,则表示正常

主从测试:
1.在主库端建立库westos和表usertb,并插入信息

[root@server1 mysql]# mysql -uroot -p
mysql> CREATE DATABASE westos;    #创建数据库westos
mysql> show databases;
mysql> USE westos; 
mysql> CREATE TABLE usertb (      #创建表usertb
    -> username varchar(10) not null,
    -> password varchar(15) not null);
Query OK, 0 rows affected (0.03 sec)
mysql> DESC usertb;              #查看表usertb的结构
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(10) | NO   |     | NULL    |       |
| password | varchar(15) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
mysql> INSERT INTO usertb VALUES ('user1','123');     #向表usertb中插入信息
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM usertb;             #查看表usertb的信息
+----------+----------+
| username | password |
+----------+----------+
| user1    | 123      |
+----------+----------+
1 row in set (0.00 sec)

在这里插入图片描述
在这里插入图片描述
注意:

  • (1)主库的Position号是会发生改变的。
  • (2)server1(主库)重启一次mysqld服务,二进制日志的名字会变一次。
    在这里插入图片描述
    2.从库端查看是否存在在主库中创建的内容
[root@server2 ~]# mysql -uroot -p

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从库看到的内容同主库一样,表示主从数据库复制搭建成功。
注意:

  • 主库编写的内容会同步到从库,从库编写的内容不会同步到主库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值