mysql主从集群读写分离的实现方案

本方案采用mycat中间件来实现两个mysql数据库的集群。两个mysql数据库分别配置为主、从,采用binlog进行数据同步。

另:基于binlog和数据库备份,可以实现记录级的灾备恢复(就算被删库,一条数据都不丢)。

整体步骤:

先做mysql的主从(master、slave)配置,

然后安装mycat,配置schema.xml、server.xml

明细:

假设主(master_host='192.168.1.70),从(slave_host='192.168.1.71),mysql离线安装在了/usr/local/mysql/

1、master配置:

vim /etc/my.cnf

server-id=200 #设置主服务器的ID

innodb_flush_log_at_trx_commit=2 #操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失

sync_binlog=1 #开启binlog日志同步功能

log-bin=mysql-bin-200 #binlog日志文件名

binlog-do-db=xxxx # 这个表示只同步某个库 (如果没有此项,表示同步所有的库)

重启mysql

/usr/local/mysql/support-files/mysql.server restart

备选重启方式:systemctl restart mysqld.service

##登录mysql

mysql -uroot -p

##授权给从数据库服务器从库,用到用户名root,密码

grant replication slave on *.* to 'root'@'192.168.1.71' identified by '从库密码';

CREATE USER 'root'@'192.168.1.71' IDENTIFIED by '从库密码';

GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.71';

flush privileges;

##查看主库的状态

mysql>show master status;

2、slave配置:

vim /etc/my.cnf

server-id=201

innodb_flush_log_at_trx_commit=2

sync_binlog=1

log-bin=mysql-bin-201

重启从库的mysql

/usr/local/mysql/support-files/mysql.server restart

备选重启方式:systemctl restart mysqld.service

mysql -uroot -p

change master to master_host='192.168.1.70', master_user='root' ,master_password='数据库密码', master_log_file='mysql-bin-200.000167' ,master_log_pos=155;

mysql> start slave; ##开启从库 (stop slave:关闭从库)

mysql> show slave status; ###Slave_IO_Running,Slave_SQL_Running 都为Yes的时候表示配置成功

3、同步数据库:

master登陆mysql

flush tables with read lock; ##锁表,不再写入

show master status; ##查看并记录binlog的位置和数值

exit

导出数据库:

mysqldump -uroot -p -x testdb> /tmp/testdb.sql

slave,获取数据库文件,确定数据库是ok的,或者初始化数据库

scp -P 22 root@192.168.1.70:/tmp/testdb.sql /tmp

创建数据库

mysql -uroot -p数据库密码 -e "create database testdb"

导入数据库

mysql -uroot -p数据库密码 testdb< /tmp/testdb.sql

master解锁表

unlock tables; ##解锁表

4、常见问题:

status报错

stop slave;

reset slave;

master_user='root' ,master_password='主库密码', master_log_file='mysql-bin-200.000001' ,master_log_pos=0; ##尝试把master_log_pos改成0

start slave;

reset master; ##慎用

5、mycat的配置文件

可以通过下面的链接下载(1共享分):

https://download.csdn.net/download/icbyboy/88757464

相关推荐
2301_803554522 分钟前
MySQL 主从读写分离架构
数据库·mysql·架构
正在走向自律9 分钟前
Ubuntu系统下Python连接国产KingbaseES数据库实现增删改查
开发语言·数据库·python·ubuntu·kingbasees·ksycopg2
樊杨杨15 分钟前
MySQL 8.0.36 主从复制完整实验
mysql
没有bug.的程序员43 分钟前
Redis 内存管理机制:深度解析与性能优化实践
java·数据库·redis·性能优化·内存管理机制
小蒜学长1 小时前
基于SpringBoot+Vue的健身房管理系统的设计与实现(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端
失散131 小时前
分布式专题——2 深入理解Redis线程模型
java·数据库·redis·分布式·架构
DemonAvenger1 小时前
数据库迁移实战:最小化停机时间的方法与经验分享
数据库·sql·性能优化
xhbh6661 小时前
Python操作MySQL的两种姿势:原生SQL与ORM框架SQLAlchemy详解
数据库·oracle
CookieCrusher5 小时前
数据泄露危机逼近:五款电脑加密软件为企业筑起安全防线
运维·数据库·windows·安全·文件加密·数据防泄漏·dlp
这周也會开心6 小时前
SQL-窗口函数
数据库·sql