MySQL主从复制
时间:2017-03-01 12:46:18
收藏:0
阅读:326
一、简介
1. 为什么使用主从复制
- 读写分离
- 高可用
- 负载均衡
- 不影响业务的情况下备份
2. 主从复制工作原理
- 主库把数据的变更记录到本地的binlog日志
- 从库开启一个IO线程实时监测主库的binlog日志是否发生变化
- 主库binlog日志发生变化,从库的IO线程同步日志到本地的relay-log
- 从库的SQL线程执行日志到数据库
二、实战
1. 规划
一主两从,各节点除了MySQL配置文件的server-id参数不同,其他操作均一致
IP规划:主库:172.17.78.21
从1 :172.17.78.22
从2 :172.17.78.23
2. 安装
shell> mkdir /downloads shell> wget -P /downloads https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz shell> cd /downloads shell> tar zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz shell> useradd -s /sbin/nologin -M -u 700 mysql shell> chown -R mysql.mysql /downloads/mysql-5.6.35-linux-glibc2.5-x86_64 shell> ln -s /downloads/mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql shell> ln -s /usr/local/mysql/bin/* /usr/local/sbin/
3. 配置
shell> vim /etc/my.cnf [mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/usr/local/mysql/data/mysql.sock pid=/usr/local/mysql/data/mysql.pid user=mysql log-bin=mysql-bin log_slave_updates=1 server-id=7821 [mysqld_safe] log-error=/usr/local/mysql/data/mysqld.log pid-file=/usr/local/mysql/data/mysql.pid
4. 初始化
shell> cd /usr/local/mysql/ shell> ./scripts/mysql_install_db --defaults-file=/etc/my.cnf 报错: Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解决: shell> yum install -y libaio-devel
5. 启动脚本 & 开机自启动
shell> cd /usr/local/mysql/ shell> cp ./support-files/mysql.server /etc/init.d/mysqld shell> vim /etc/init.d/mysqld # 修改以下参数 basedir=/usr/local/mysql datadir=/usr/local/mysql/data shell> chkconfig --add mysqld shell> chkconfig mysqld on
6. 启动数据库
shell> /etc/init.d/mysqld start
7. 建立主从关系
主库上操作:
shell> mysql -uroot mysql> grant replication slave on *.* to ‘repl‘@‘172.17.78.22‘ identified by ‘123456‘; mysql> grant replication slave on *.* to ‘repl‘@‘172.17.78.23‘ identified by ‘123456‘; mysql> flush privileges; mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000004 | 408 | | | | +------------------+----------+--------------+------------------+-------------------+ # File 和 Position 的值后续将会用到
从库操作:
shell> mysql -uroot mysql> change master to master_host=‘172.17.78.21‘,master_user=‘repl‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000004‘,master_log_pos=408; mysql> start slave; mysql> show slave status\G # 以下参数说明MySQL主从建立正常 Slave_IO_Running: Yes Slave_SQL_Running: Yes
三、测试
在主库创建库、表,并插入数据,查看从库是否同步。
原文:http://www.cnblogs.com/Little-M/p/6483157.html
评论(0)