主节点与从节点配置
MySOL支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可以作为其他从服务器的主服务器,如果MySQL主服务器访问量比较大,可以通过复制数据,然后在从同各器上进行查询操作,从而降低主服务器的访问压力,同时从服务器作为主服务器的备份,可以避免主服务器因为故障数据丢失的问题。
MySQL数据库复制操作大致可以分成三个步骤:
- 主服务器将数据的改变记录到二进制日志(binary log)中。
- 从服务器将主服务器的binary log events 复制到它的中继日志(relay log)中。
- 从服务器重做中继日志中的事件,将数据的改变与从服务器保持同步。
首先,主服务器会记录二进制日志,每个事务更新数据完成之前,主服务器将这些操作的信息记录在二进制日志里面在事件写入二进制日志完成后主服务器通知存储引擎提交事务。
准备: 了解binlog日志,MySQL用户-权限mysql服务器配置复制不难,但是因为场景不同可能会存在一定的差异化,总的来说分为一下几步:
- 在服务器上创建复制账号。
- 通知备库连接到主库并从主库复制数据。
角色 | IP | 操作系统 | mysql版本 | 端口 | 复制账号 | 密码 |
主Master | 192.168.24.131 | CentOS7.6.1810 | mysql8.0.21 | 3306 | mytest | mytest |
从slave1 | 192.168.24.133 | CentOS7.6.1810 | mysql8.0.21 | 3306 | ... | ... |
从slave2 | 192.168.24.134 | CentOS7.6.1810 | mysql8.0.21 | 3306 | ... | ... |
主库(192.168.24.131)
从库(192.168.24.133)
创建用于主库从测试的账号mytest
这账号咋么创建呢??
/*创建账号sql:
create user 'username'@'localhost' identified by 'password';
授权grant [权限] on *.* to 'username'@'localhost' identified by 'password';
主要就是下配置文件中添加如下配置
[root@localhost panel]# vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
查看binlog日志是否开启
mysql> show master status;
查看当前binlog日志节点位置
Slave节点配置
修改配置
[root@localhost mysql]# vi /etc/my.cnf
[root@localhost mysql]# service mysql restart
Shutting down MySQL.. SUCCESS!
在配置文件中添加 /etc/my.cnf
# 配置从节点
server-id = 2
relay_log = /usr/local/mysql/data/mysql-relay-bin
relay_log-index = /usr/local/mysql/data/mysql-relay-bin.index
log_slave_updates = 1
read_only = 1
参数介绍:
- server_id:这是服务id系统会自动命名的,但如果机器名边画画肯能回答导致问题。可以讲你主库和备库上的log-bin设置为相同的值。
- relay_log:指定 中继日志的位置和命名
进入从数据库操作
指定主节点的ip,端口,用户
mysql> CHANGE MASTER TO MASTER_HOST='192.168.24.131',MASTER_PORT=3306,MASTER_USER='mytest',MASTER_PASSWORD='root',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=2670;
主服务器master配置参数
启动从节点
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)mysql> show slave status \G;
mysql主从复制设置成功。