赞
踩
从库生成两个线程,一个I/O线程,一个SQL线程;
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
mysql的日志类型:
Error log 错误日志
General query log普通查询日志
Slow query log 慢查询日志(记录哪些查询比较慢 )
Binary log二进制日志文件(1、用于增量备份。2、主从)
要实现MySQL的主从复制,首先必须打开Master端的Binlog记录功能,否则就无法实现。因为整个复制过程实际上就是Slave从Master端获取BInlog日志,然后再在Slave上以相同顺序执行获取的binlog日志中记录的各种SQL操作。
单向复制,只能slave复制master的,即slave对master库只读
base2 | 172.25.78.12 | master |
---|---|---|
base3 | 172.25.78.13 | slaver |
[root@base2 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar [root@base2 ~]# ls mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-devel-5.7.24-1.el7.x86_64.rpm mysql-community-embedded-5.7.24-1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.24-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm mysql-community-server-minimal-5.7.24-1.el7.x86_64.rpm mysql-community-test-5.7.24-1.el7.x86_64.rpm [root@base2 ~]# yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm \ mysql-community-common-5.7.24-1.el7.x86_64.rpm \ mysql-community-libs-5.7.24-1.el7.x86_64.rpm \ mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm \ mysql-community-server-5.7.24-1.el7.x86_64.rpm # 只需要这五个即可 [root@base2 ~]# vim /etc/my.cnf log-bin=mysql-bin # 启用二进制功能,主从复制基础 server-id=1 # id唯一
[root@base2 ~]# systemctl start mysqld
[root@base2 ~]# cat /var/log/mysqld.log | grep password # 查看临时密码
[root@base2 ~]# mysql -p # 我们可以用临时密码登录数据库,但是什么都干不了
Enter password:
mysql> show databases;
[root@base2 ~]# mysql_secure_installation # 初始化密码
[root@base2 ~]# mysql -p # 再次登录,可以正常使用
Enter password:
mysql> show databases;
mysql> grant replication slave on *.* to repl@'172.25.78.%' identified by 'Ting@666'; # 为服务器创建一个连接账户并授予权限,*.*表示所有权限;172.25.78.%表示这个网段的所有用户都有这个权限
mysql> show master status;
[root@base2 ~]# mysql -h 172.25.78.12 -u repl -p
Enter password:
mysql> show databases; # 测试成功
mysql> quit
[root@base3 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
[root@base3 ~]# yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm \
mysql-community-common-5.7.24-1.el7.x86_64.rpm \
mysql-community-libs-5.7.24-1.el7.x86_64.rpm \
mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm \
mysql-community-server-5.7.24-1.el7.x86_64.rpm
[root@base3 ~]# vim /etc/my.cnf
server-id=2
注:从服务器 ID 号,不能和主 ID 相同,如果设置多个从服务
器,每个从服务器必须有一个唯一的 server-id 值,必须与主服
务器的以及其它从服务器的不相同。可以认为 server-id 值
类似于 IP 地址:这些 ID 值能唯一识别复制服务器群集中的
每个服务器实例。
[root@base3 ~]# systemctl start mysqld
[root@base3 ~]# cat /var/log/mysqld.log | grep password
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。