本节我们要讲的是mysql的主从复制,之所以要进行主从复制,主要是可以进行读写分离,减轻mysql服务器的压力。那么下面我们就来看看如何实现主从复制。
复制的功用:
负载均衡
数据分布
备份
高可用性
mysql升级测试
缺点:
单点
写操作无法均衡
mysql复制的工作原理:
将主节点的的二进制日志放到从节点上重新执行一遍
复制的三个步骤:
1、在主库上启用二进制日志
2、备库冲主库复制二进制日志,并保存至本地的中继日志中;
3、 备库从中继日志中读取事件并于本地执行一次。
主从复制框架
master:172.16.6.1
slave:172.16.6.2
注意:slave版本必须与master相同,或者更高,因为从节点必须兼容主节点。如果在一个已存在数据的主服务器上部署备服务器,要先备份主服务器的数据,备份的时候做好二进制日志位置记录 ,然后恢复到从服务器上,并指定从服务器的从主服务器二进制日志的复制位置,从时间点开始复制。
master端
配置文件中加入以下项:
[mysqld]
log-bin=/var/log/master-bin 定义二进制日志
binlog_format=mixd 格式
sync_binlog=1 同步二进制日志
server-id=10 主从节点必须不一致
启动mysql并创建用户
mysql>
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl@'172.16.6.%' IDENTIFIED BY '123456';
mysql>
FLUSH PRIVILEGES;
查看二进制
show master status; mysql>
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 486 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.02 sec)
slave端
配置文件中加入以下项:
[mysqld]
# log-bin=/mydata/bin-log/master-bin # 从节点中禁用二进制日志
# binlog_format=mixed
relay-log=/var/log/relay-bin #启用中继日志
sync_binlog = 1
server-id = 20
read_only = 1
连接主服务器:
mysql> CHANGE MASTER TO MASTER_HOST='172.16.6.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-bin.00001',MASTER_LOG_POS=486;
mysql>
START SLAVE;
启动线程IO_THREAD和SQL_THREAD:
start slave IO_THREAD; mysql>
Query OK, 0 rows affected (0.00 sec)
start slave SQL_THREAD; mysql>
Query OK, 0 rows affected (0.00 sec)
show slave status\Gmysql>
好了下面就可以进行测试了。
master
在主节点中创建数据库
create database mwj; mysql>
Query OK, 1 row affected (0.00 sec)
show databases; mysql>
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mwj |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.03 sec)
slave
在从节点中查看是否同步
show databases; mysql>
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mwj |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.02sec)
OK,复制成功,那么本节的实验就到这里,谢谢!