翼度科技»论坛 编程开发 mysql 查看内容

MySQL主从复制

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
目录

一、主从复制的原理


  • master服务器将数据的改变记录二进制日志,当master上的数据发生改变时,则将其改变写入二进制日志中;
  • salve服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件;
  • 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中;
  • 从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致;
  • 最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

二、搭建主从复制(一主一从)

涉及主机:
主机名IP地址db01(master)192.168.112.40db02(slave)192.168.112.501、两台主机安装MySQL
  1. #二进制安装
  2. wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
  3. tar xzvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
  4. mkdir /application
  5. mv mysql-5.6.40-linux-glibc2.12-x86_64 /application/mysql-5.6.40
  6. ln -s /application/mysql-5.6.40/ /application/mysql
  7. cd /application/mysql/support-files/
  8. \cp my-default.cnf /etc/my.cnf
  9. cp mysql.server /etc/init.d/mysqld
  10. cd /application/mysql/scripts
  11. useradd mysql -s /sbin/nologin -M
  12. yum -y install autoconf
  13. cd /application/mysql/scripts/
  14. ./mysql_install_db --user=mysql --basedir=/application/mysql --data=/application/mysql/data
  15. echo 'export PATH="/application/mysql/bin:$PATH"' >> /etc/profile.d/mysql.sh
  16. source /etc/profile
  17. sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
  18. #指定MySQL安装根目录以及数据目录
  19. vim /etc/my.cnf
  20. basedir = /application/mysql/
  21. datadir = /application/mysql/data
  22. #设置密码
  23. mysqladmin -uroot password '123'
复制代码
2、修改配置文件
  1. vim /etc/my.cnf
  2. #主库
  3. server_id=1
  4. log_bin=mysql-bin
  5. binlog_format=row
  6. #从库
  7. server_id=2
复制代码
3、创建主从复制用户
  1. #登录数据库
  2. [root@db01 ~]# mysql -uroot -p123
  3. #创建slave用户
  4. mysql> grant replication slave on *.* to slave@'192.168.112.%' identified by '123';
  5. Query OK, 0 rows affected (0.00 sec)
复制代码
4、主从库重启并验证server_id

主从库重启
  1. /etc/init.d/mysqld restart
  2. #遇到重启失败
  3. [root@db02 ~]# /etc/init.d/mysqld restart
  4. ERROR! MySQL server PID file could not be found!
  5. Starting MySQL.Logging to '/application/mysql/data/db02.err'.
  6. ...........^C
  7. [root@db02 ~]#
  8. [root@db02 ~]# mysqladmin -uroot -p123 shutdown
  9. Warning: Using a password on the command line interface can be insecure.
  10. [root@db02 ~]# /etc/init.d/mysqld restart
  11. Shutting down MySQL.. SUCCESS!
  12. Starting MySQL. SUCCESS!
复制代码
验证server_id
  1. mysql> show variables like "server_id";
复制代码

验证主库的binlog是否开启
  1. mysql> show variables like "%bin%";
复制代码

5、配置从库与主库的复制关系
  1. #从库
  2. change master to
  3. master_host='192.168.112.40',
  4. master_user='slave',
  5. master_password='123',
  6. master_log_file='mysql-bin.000001',
  7. master_log_pos=120;
  8. start slave;
  9. show slave status\G;
复制代码
主库使用show master status;
查看master_log_file和master_log_pos



6、验证主从复制

目前两个数据库数据是一致的

主库创建t1表并插入数据

可以看到从库也同步复制了主库更新的数据

至此主从复制配置完成

来源:https://www.cnblogs.com/misakivv/p/18102266
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具