«
MySQL主从复制 yum安装

时间:2022-7-3     作者:李泽信     分类: MySQL


MySQL数据库的主从复制

系统环境 IP地址 安装版本
centos7.8 192.168.100.105 mysql5.7.39
centos7.8 192.168.100.106 mysql5.7.39
[root@localhost ~]# vim /etc/my.cnf         ##在mysqld区域添加以下内容
[mysqld]
server-id=1             ##配置server-id,让主服务器有唯一ID号
log-bin=mysql-bin       ##打开mysql日志,日志格式为二进制
skip-name-resolve       ##关闭名称解析,(非必填)

[root@localhost ~]# systemctl restart  mysqld.service       ##重启生效
[root@localhost ~]# mysql -uroot -p123123
##在master的数据库中建立一个备份账户:使得每一个slave使用标准的MySQL用户名和密码连接master,进行赋值操作的用户会授予replication slave权限
mysql> grant replication slave,replication client on *.* to slave@'192.168.100.%' identified by '123123';

##在master的数据库执行show master status,查看主服务器二进制状态及位置号
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      622 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id=2                     ##配置server-id,让从服务器有唯一ID号
relay-log=mysql-relay-bin       ##打开mysql日志,日志格式为二进制
read-only=1                     ##设置为只读权限
log-bin=mysql-bin               ##开启从服务器二进制日志
log-slave-updates=1             ##使得更新的数据写进二进制日志中

[root@localhost ~]# systemctl restart  mysqld.service
[root@localhost ~]# mysql -uroot -p123123
##让slave连接master,并开始重做master二进制日志中的事件
mysql> change master to master_host='192.168.100.105',
    -> master_user='slave',
    -> master_password='123123',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=622;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> start slave;         ##执行start  slave,启动复制线程
Query OK, 0 rows affected (0.00 sec)

##使用show slave status\G;查看服务器状态,如下所示,也可使用show processlist \G;查看当前复制状态
mysql> show slave status\G;
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

mysql> create database hello;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hello              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use hello;
mysql> create table good(id int not null);
mysql> show tables;
+-----------------+
| Tables_in_hello |
+-----------------+
| good            |
+-----------------+
1 row in set (0.00 sec)

mysql> insert into good values (1);
mysql> show tables;
+-----------------+
| Tables_in_hello |
+-----------------+
| good            |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from good;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

slave验证

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hello              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use hello;
mysql> show tables;
+-----------------+
| Tables_in_hello |
+-----------------+
| good            |
+-----------------+
1 row in set (0.00 sec)

mysql> select * from good;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)