MySQL 主从配置
2018-12-28 本文已影响0人
fangfc
1. MySQL 主从配置
- 读写分离是启动多个MySQL服务, 一台服务器 作为主服务器(master), 剩下从服务器(slave)读取主服务的 binlog然后写入数据库.
- 配置主从服务, 可以分担单台数据库服务器的压力,
- 实现步骤:
- master:
- 开启binlog 写入指定文件, 并且创建一个授权用户 用于授权 slave 来复制日志.
- slave:
- 设置Master 的相关配置, slave 会复制master的binlog 并写入自己的 relaylog 中, slave 会启动一个线程读取 relaylog 并写入数据库中.
- master:
2. 主从配置
- 准备主从两个MySQL
- 我这里是单台服务器启动了两个MySQL 服务
[root@node10009 mysql]# ss -tanp |grep 330
LISTEN 0 128 127.0.0.1:3307 *:* users:(("mysqld",pid=3646,fd=34))
LISTEN 0 128 :::3306 :::* users:(("mysqld",pid=965,fd=35))
[root@node10009 mysql]#
- 备份并恢复
- 备份Master 数据, 恢复到Slave 上
- 备份
[root@node10009 mysql]# mysqldump -uroot -p -P3306 test > /opt/back/test.sql
- 恢复到从服务器
[root@node10009 mysql]# mysql -uroot -p -P3307 < /opt/backup/test.sql
Enter password:
[root@node10009 mysql]#
- master 配置文件
[mysqld]
server_id = 101
log_bin = /opt/app/mysql57/data/binlog/mysql_bin
- 重启
[root@node10009 mysql]# systemctl restart mysqld
[root@node10009 mysql]#
- 查看master 状态
MySQL [(none)] > show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000096 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
- 创建用户用户用于 salve 连接到 Master
MySQL [(none)] > GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.10.%' IDENTIFIED BY 'backup';
- slave 配置
- 编辑配置文件
[mysqld]
server_id = 102
relay_log = /opt/app/mysql/data/relaylog/relay_log
- 重启
[root@node10009 mysql]# /opt/app/mysql/bin/mysqladmin -uroot -p -P3306 shutdown
[root@node10009 mysql]# /opt/app/mysql/bin/mysqld_safe --defaults-file=/opt/app/mysql/etc/my.cnf -umysql &
- 配置slave 连接master
MySQL [test] > CHANGE MASTER TO MASTER_HOST='192.168.10.9',MASTER_USER='slave',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql_bin.000096',MASTER_LOG_POS=154;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
- 查看状态
MySQL [test] > show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.10.9
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql_bin.000096
Read_Master_Log_Pos: 154
Relay_Log_File: relay_log.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql_bin.000096
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
....
- 测试
- 查看主从数据
- master 修改数据并查看
END