一、环境要求
(一)关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
(二)配置域名解析
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# init 6
[root@localhost ~]# hostnamectl set-hostname slave
[root@localhost ~]# init 6
[root@master ~]# tail -2 /etc/hosts
192.168.163.128 slave
192.168.163.135 master
二、主Master
(一)准备数据
[root@master ~]# mysql -uroot -p'Daidai@123'
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.02 sec)
mysql> create database yyl;
Query OK, 1 row affected (0.02 sec)
mysql> use yyl;
Database changed
mysql> create table t1(id int);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t1 values (1),(2);
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
mysql> \q
(二)开启二进制文件
[root@master ~]# vim /etc/my.cnf
[mysqld]
log_bin
server-id=1
[root@master ~]# systemctl restart mysqld
(三)创建复制用户
[root@master ~]# mysql -uroot -p'Daidai@123'
mysql> grant replication slave,replication client on *.*to 'rep'@'%' identified by 'Daidai@123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
(四)备份Master数据库的数据
[root@master ~]# mysqldump -p'Daidai@123' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F`-mysql-all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@master ~]# ls
2022-12-11-mysql-all.sql
[root@master ~]# scp -r 2022-12-11-mysql-all.sql slave:/tmp
(五)准备数据(验证主从是否同步)
[root@master ~]# mysql -uroot -p'Daidai@123'
mysql> insert into yyl.t1 values (521);
Query OK, 1 row affected (0.03 sec)
mysql> select * from yyl.t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 521 |
+------+
3 rows in set (0.00 sec)
mysql> \q
三、从Slave
(一)测试rep用户是否可用
[root@slave ~]# mysql -urep -pDaidai@123 -h master
mysql> \q
Bye
(二)启动服务器序号
[root@slave ~]# vim /etc/my.cnf
[mysqld]
server_id=2
(三)手动同步数据
mysql> set sql_log_bin=0;
mysql> source /tmp/2022-12-11-mysql-all.sql
(四)设置主服务器
mysql> change master to
master_host='master',
master_user='rep',
master_password='Daidai@123',
master_log_file='localhost-bin.000002',
master_log_pos=154;
(五)启动从服务器
mysql> start slave;
(六)查看启动状
show slave status\G;
...
Relay_Master_Log_File: localhost-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
这样,我们就完成了对Mysql一主一丛的配置了。