1、主从复制
原理
MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二
进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他
数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如
果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个
SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实
现了主从复制。
实践
准备工作
主数据库服务器(master):192.168.128.164,MySQL已经安装,并且无应用数据。
从数据库服务器(slave):192.168.128.167,MySQL已经安装,并且无应用数据。
主数据库master配置
修改mysql配置文件
重启mysql,并创建用于同步的用户账号
vi /etc/my.cnf
在[mysqld]部分插入以下两行配置
打开mysql会话shell
mysql -uroot -proot
创建用户:用户:slave 密码:slave
注意:ip为slave的地址
分配权限
查看master状态,并记录二进制文件名(mysql-bin.000001)位置(106)
从数据库slave配置
修改mysql配置文件
重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置)
启动slave同步进程
查看slave状态
重启服务
vi /etc/my.cnf
在[mysqld]部分插入以下一行配置
start slave;
主从配置完成,可以通过主库建库,建表,插入数据测试
读写分离
Mysql新版驱动类ReplicationDriver实现读写分离
准备工作,需搭建好mysql主从集群
实现目标
使数据写入到master
读数据时,从slave中读取
原理使用mysql驱动自带的replicationDriver来实现,replicationDriver简单来说就是存在两个Connection,一个masterConnection,一个slaveConnection;当setReadonly(true)就把currentConnection=slaveConnection,反之设置为masterConnection
触发条件
读操作需设置 readOnly 为 true
实现步骤
applicationContext.xml
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
读操作需设置readonly=true
测试
数据库中间件
如:mysql-proxy、mycat等