1、主从复制

实践

准备工作
主数据库master配置

重启mysql,并创建用于同步的用户账号
vi /etc/my.cnf

在[mysqld]部分插入以下两行配置
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id 需唯一
打开mysql会话shell

mysql -uroot -proot

创建用户:用户:slave 密码:slave
注意:ip为slave的地址
CREATE USER 'slave'@'192.168.128.167' IDENTIFIED BY 'slave';
分配权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.128.167';
flush privileges; #刷新权限
查看master状态,并记录二进制文件名(mysql-bin.000001)位置(106)
从数据库slave配置
修改mysql配置文件
重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置)
启动slave同步进程
查看slave状态
重启服务
service mysqld restart
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

vi /etc/my.cnf

在[mysqld]部分插入以下一行配置
server-id=2 #设置server-id 需唯一
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.128.164',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;

start slave;

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.128.164
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 106
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 251

主从配置完成,可以通过主库建库,建表,插入数据测试

读写分离

Mysql新版驱动类ReplicationDriver实现读写分离
准备工作,需搭建好mysql主从集群
实现目标
使数据写入到master
读数据时,从slave中读取

实现步骤

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等

03-02 05:38