Mysql 主从主主复制总结(详细)
环境:Centos 6.9,Mysql 8.0
配置准备:1、为Centos配置好网络,使用远程工具连接。
2、安装mysql,途径不限。mysql8.0和5.7区别不大,8.0在配置主从的时候默认开启了binlog,5.7手动起一下就好,下文有启动方法。(我使用rpm包安装,安装后要先启动msyql服务,命令service mysqld start)
3、mysql安装后的默认密码在 /etc/my.cnf 中 log-error配置项所指向的log地址中 /var/log/mysqld.log
主从复制
好处:多节点性能变优,安全性更高,提高服务器负载。
应用场景:数据库备份、读写分离
步骤: 首先。确定一个主节点master,其他为从节点slave。
1、配置主节点。创建用户授予权限;如果binlog没开启,打开binlog日志;
2、配置从节点。配置同步日志;确定主节点的ip,端口,用户;启动从节点;
主节点(Master):
修改mysql配置文件,vim /etc/my.cnf 配置server-id的值,与从节点不能重复。
创建创建一个用户。 create user 'repl'@'192.168.110.%' identified by 'Repl_123456';
在主服务器赋予它 replication slave 权限。grant replication slave on *.* to 'repl'@'192.168.110.%';
mysql 日志类型:
Error log 错误日志
General query log普通查询日志
Slow query log 慢查询日志(记录哪些查询比较慢 )
Binary log二进制日志文件(1、用于增量备份。2、主从)
查看是否已开启binlog:show variables like '%log_bin%';
如果没开启,配置 :vim /etc/my.cnf加上 server-id=1(多台节点值不能重复)和 log_bin=/var/lib/mysql/mysql-bin 保存退出 重启mysql服务。
查看binlog日志:在mysql中 show binlog events in '文件名'; 在系统中 mysqlbinlog 文件名;
每次重新启动mysql都会新建一个binlog。查看当前是哪个binlog文件:show master status;
show msater logs;(查看所有日志文件),reset master(清空所有日志文件)
binlog日志恢复数据
mysqlbinlog 文件名 | mysql -u root -p
从节点(Slave):
修改mysql配置文件,vim /etc/my.cnf
配置server_id(不能与主节点重复,且必须为数字)
配置同步日志路径relay-log=/var/lib/mysql/relay-bin
进入mysql执行
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.110.66', -> MASTER_USER='repl', -> MASTER_PASSWORD='Repl_123456', -> MASTER_LOG_FILE='binlog.000007', -> MASTER_LOG_POS=0; Query OK, 0 rows affected, 2 warnings (0.01 sec) mysql> START SLAVE; Query OK, 0 rows affected (0.00 sec)
show slave status\G;检查是否已链接上主节点,根据里面的错误信息修改配置。确保master防火墙关闭,/var/lib/mysql/auto.cnf里的uuid不重复。
如果出现Slave_Io_Running:yes但Slave_SQL_Running:No的情况执行
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
配置成功!
主主复制其实的意思就是节点直接互为主从复制。
在配置好主从之后再去配置从节点,反向配置一遍主从。