MySQL不停机不锁表主从同步与读写分离配置
### MySQL不停机不锁表主从同步与读写分离配置详解 #### 一、XtraBackup 安装 为了实现MySQL不停机不锁表的主从同步与读写分离配置,首先需要安装XtraBackup工具。XtraBackup是一款非常优秀的开源备份工具,尤其适用于InnoDB表的热备份。 **安装步骤:** 1. **安装必要的依赖包**:使用`yum`安装一系列必要的依赖包,确保后续安装过程顺利进行。 ```bash yum -y install cmake gcc-c++ ncurses-devel perl-Data-Dumper git make libaio libaio-devel perl-Data-Dumper net-tools bison-devel ``` 2. **安装XtraBackup RPM包**:通过RPM包安装XtraBackup,确保下载的RPM包与系统版本兼容。 ```bash rpm -ivh percona-xtrabackup-2.2.12-1.el6.x86_64.rpm ``` **注意**:下载链接:[https://www.percona.com/software/mysql-database/percona-xtrabackup](https://www.percona.com/software/mysql-database/percona-xtrabackup) #### 二、核对MySQL的版本 为了确保备份与恢复的兼容性,需要确认主服务器与从服务器的MySQL版本保持一致。 **检查MySQL版本命令:** ```bash mysql -V ``` 示例输出结果: ``` mysql Ver 14.14 Distrib 5.6.31, for Linux (x86_64) using EditLine wrapper ``` #### 三、在Master服务器上在线备份数据库 1. **备份数据库**:使用`innobackupex`命令进行在线备份,无需停止MySQL服务,也不需要锁定表。 ```bash innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxxx /data/backup/ ``` 其中`/data/backup/`为备份目录。 2. **传输备份文件**:将备份文件通过`scp`命令传输至从服务器。 ```bash scp -r /data/backup/2016-06-27_23-59-56 root@192.168.1.121:/data/backup/ ``` #### 四、Slave机器上的操作 1. **关闭MySQL服务**:在从服务器上关闭MySQL服务。 2. **清空数据目录**:清空从服务器MySQL数据目录下的所有文件。 ```bash rm -rf /data/* ``` 3. **恢复数据**:按照指定顺序执行以下操作: - **恢复redo log**: ```bash innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxxx --apply-log /data/backup/2016-06-27_23-59-56/ ``` - **复制数据文件**: ```bash innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxxx --copy-back /data/backup/2016-06-27_23-59-56/ ``` 4. **修改数据目录权限**:更改数据目录的所有权。 ```bash chown -R mysql:mysql /data/mysql/data ``` 5. **启动并检查MySQL服务**:启动MySQL服务,并检查是否存在任何异常。 ```bash service mysql start ``` 如果没有异常,则关闭MySQL服务。 ```bash service mysql stop ``` 6. **设置主从同步**: - **获取binlog文件位置**: ```bash cat /data/backup/2016-06-27_23-59-56/xtrabackup_binlog_info ``` - **配置主从同步**:根据获得的信息,在从服务器上执行如下命令: ```sql CHANGE MASTER TO MASTER_HOST='192.168.1.xxx', MASTER_USER='repl', MASTER_PASSWORD='xxxxxx', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000458', MASTER_LOG_POS=1022022953; ``` - **启动主从同步**: ```sql START SLAVE; ``` - **检查从服务器状态**: ```sql SHOW SLAVE STATUS \G ``` #### 五、读写分离配置 为了实现读写分离,可以使用Mycat作为中间件。下面是一个基本的配置示例: **server.xml配置:** ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"> <system> <property name="defaultSqlParser">druidparser</property> </system> <user name="root"> <property name="password">XXXXXX</property> <property name="schemas">db1,db2,...</property> </user> </mycat:server> ``` **schema.xml配置:** ```xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xml ``` 这里只给出了一个简单的框架,具体细节需要根据实际情况进行调整。通过上述配置,可以实现对不同数据库的读写分离。
- wyl19922018-05-02干的好可以的好好哈藕粉大俄方额
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助