一、数据主从理论
1、主从复制原理
Mysql主从又叫Replication、AB复制。简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步。
2、MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。
3、主从复制的作用及应用
(1)实时灾备,用于故障切换
(2)读写分离,提供查询服务
(3)备份,避免影响业务
二、主从复制操作流程
1、服务器初始准备
主服务器:
开启二进制日志
配置唯一的server-id
获得master二进制日志文件名及位置
创建一个用于slave和master通信的用户账号
从服务器:
配置唯一的server-id
使用master分配的用户账号读取master二进制日志
启用slave服务
准备工作:
1.主从数据库版本最好一致(mysql5.5)
2.主从数据库内数据保持一致(mysql5.5)
主数据库:192.168.138.150
从数据库:192.168.138.151
2、修改Mysql配置,开启bin.log
找到主数据库的配置文件my.cnf(或者my.ini)
修改完成之后,重启数据库
3、重启mysql,创建用于同步的用户账号并赋予权限
mysql> create user jumpwslaver@192.168.138.151 IDENTIFIED BY 'jumpwbx';
赋予权限
检查从库账户jumpwbxslaver的权限
mysql> show grants for jumpwbxslaver@192.168.138.151;
3、查看master状态,记录二进制文件名(mysql-bin.000008)和位置(1993)
mysql> show master status ;
至此,主库配置完成。
三、主从复制从库配置流程
1、同样的是修改数据库的/etc/my.conf文件,需要注意的是sever-id 必须区别于主数据库的server-id
2、重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置)
mysql> CHANGE MASTER TO MASTER_HOST='192.168.138.150',
-> MASTER_USER='jumpwbx',
-> MASTER_PASSWORD='jumpwbx',
-> MASTER_LOG_FILE='mysql-bin.000008',
-> MASTER_LOG_POS=1993;
3、启动主从同步
mysql> start slave;
4、查看slave状态
mysql> SHOW SLAVE STATUS\G;
当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功。接下来,可以在主库做些增删查找的操作,看一下是否同步到从库。
四、主从同步实验
主库数据库状态
从库数据库状态
操作:删除lee这个自定义的数据库
从库已经和主库同步。
扩展操作
可以在配置中进行定义,哪些库是同步的,哪些是不同步的。
#不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
清除主从关系