运维之道 | MySQL主从复制、主主复制

MySQL主从复制、主主复制

主从复制:主库可写(会写入从库)可读,从库只能读
主主复制:两个库可写可读,一个库修改会写入另一个库

一、主从复制

1、准备两台服务器
主库服务器 192.168.1.140 master
从库服务器 192.168.1.141 slave

2、在主库创建一个测试数据库、并写入数据用作测试;

mysql> create database school;
mysql> create table stdents;
mysql> select * from students;
+------+------+------+
| ID   | NAME | age  |
+------+------+------+
|    1 | zeng |   20 |
|    2 | liao |   21 |
|    3 | love |   23 |
+------+------+------+
5 rows in set (0.04 sec)

3、配置 master 主库服务器

a. 开启binlog

vi /etc/my.cnf

[myslqd]
server-id=1                         ## 机器的唯一标识 ##
bin-log=mysql-bin                   ## bin-log日志名称 ,开启bin-log ##
binlog-format=ROW		            ## 二进制日志格式 ##
datadir = /data/mysql				## bin-log日志存放地点 ##

# binlog-do-db=school                ## 同步数据库名称(可不用) ##

b.重启 service mysqld restart

[root@localhost ~]# systemctl restart mysqld

c.进入mysql,查看binlog是否开启成功

[root@localhost ~]# cd /data/mysql
[root@localhost mysql]# ll
-rw-r-----. 1 mysql mysql      178 105 08:34 binlog.000017
-rw-r-----. 1 mysql mysql      178 105 09:17 binlog.000018
-rw-r-----. 1 mysql mysql      178 105 09:49 binlog.000019
-rw-r-----. 1 mysql mysql      155 105 09:49 binlog.000020
-rw-r-----. 1 mysql mysql      320 105 09:49 binlog.index

d.创建用户并授权

[root@localhost mysql]# mysql -u root -p     #登录mysql#
mysql> create user 'villian'@'192.168.206.141' identified by '123456';       ##创建用户##
mysql> grant replication slave on *.* to 'villian'@'192.168.206.141';        ##用户授权##

4、配置 slave 从库服务器

a.开启binlog

vi /etc/my.cnf 

[myslqd]
server-id=2        							   ## 机器的唯一标识   ##
bin-log=mysql-bin                              ## bin-log日志名称 ,开启bin-log ##
binlog-format=ROW		                       ## 二进制日志格式,跟主服务器一致 ##
log-slave-updates=true                         ## 中继日志执行之后,这些变化是否需要计入自己的binarylog。党你的从服务器需要作为另外一个服务器的主服务器的时候需要开启。就是双主互相备份,或者多主循环备份。##

## ( ( server-id机器的唯一标识),后面两步是用来打开slave的relaylog功能的)

b.重启mysql

[root@localhost ~]# systemct restart mysqld

5、建立主从关系

a.打开主库服务器登录mysql (获取File 和 Position)

[root@localhost ~]# mysql -u root -p          ##   登录mysql   ##
mysql> show master status;                    ## 查看master状态 ##
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |     1356 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

b.打开从库服务器登录mysql

[root@localhost ~]# mysql -u root -p          ## 登录mysql ##
mysql> show slave status\G;                   ## 查看状态  ##

状态未开启时进行如下设置:
mysql> change master to master_host='192.168.206.140'; ## 主节点 ##
mysql> change master to master_port=3306;         ## 主节点的端口号 ##
mysql> change master to master_user='villian';    ## 账号 ##
mysql> change master to master_password='123456'; ## 密码 ##
mysql> change master to master_log_file='mysql-bin.000001';  ## show master status 对应上述主库的日志  ##
mysql> change master to master_log_pos=1356;   ## show master status 对应上述主库的pos  ##

c.在从库服务器开启从节点

mysql> start slave;              ## 开启从节点 ##
mysql> show slave status\G;      ## 查看状态 ##

下图红色框框必须为开启状态
Slave_IO_Running  :负责与主机的io通信
Slave_SQL_Running :负责自己的slave mysql进程

在这里插入图片描述
其他错误:1.网络不通; 2.密码不对; 3.pos不对; 4.防火墙没关; 5.server-id冲突;
1、若使用克隆虚拟机,必须修改mysql UUID,否则会显示 Slave_IO_Running: NO
2、主从复制实战视频讲解分析
3、master and slave have equal MySQL server ids
4、防火墙

————————— ####### 主从复制配置完成 ####### ———————————

二、主主复制

1、准备两台服务器
主库服务器 192.168.1.140 master
从库服务器 192.168.1.141 master

2、在两台机器安装mysql
MySQL 8.0 安装教程


3、修改两个库服务器my.cnf配置文件

第一台:
[root@localhost mysql]# vi /etc/my.cnf
[mysqld]

server-id=1
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2
auto_increment_offset=1
第二台:
[root@localhost mysql]# vi /etc/my.cnf
[mysqld]

server-id=2
log-bin=/var/lib/mysql/mysql-bin
auto_increment_increment=2
auto_increment_offset=2
[root@localhost mysql]# systemctl restart mysqld        ## 重启mysql ##

4、创建用户并授权(两个服务器都要创建)

[root@localhost mysql]# mysql -u root -p     #登录mysql#
mysql> create user 'villian'@'%' identified by '123456';     ##创建用户##
mysql> grant replication slave on *.* to 'villian'@'%';      ##用户授权##

5、建立关系
############# 第二台关联第一台 ##############
a.打开第一台机器登录mysql

mysql> show master status;    ##  查看状态  ##
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |     1356 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

b.打开第二台机器登录mysql,执行如下操作

change master to master_host='192.168.206.140'; // 主节点
change master to master_port=3306; //主节点的端口号
change master to master_user='villian1', // 账号
change master to master_password='123456', // 密码
change master to master_log_file='mysql-bin.000001', // show master status 对应的的日志
change master to master_log_pos=1356; // show master status 对应的

############# 第一台关联第二台 ##############
a.打开第二台机器登录mysql

mysql> show master status;    ##  查看状态  ##
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |     2072 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

b.打开第一台机器登录mysql,执行如下操作

change master to master_host=192.168.206.141;    ## 主节点
change master to master_port=3306;                 ##主节点的端口号
change master to master_user='villian2';           ## 账号
change master to master_password='123456';// 密码
change master to master_log_file='mysql-bin.000002'; ## show master status 对应的的日志
change master to master_log_pos=2072;              ## show master status 对应的

6.启动库,执行start slave

mysql> start slave; 

注释:若使用克隆虚拟机,必须修改mysql UUID,否则会显示 Slave_IO_Running: NO
其他错误:1.网络不通; 2.密码不对; 3.pos不对; 4.防火墙没关; 5.server-id冲突;

————————— ####### 主主复制配置完成 ####### ———————————

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值