目录
1.配置案例
Ubuntu搭建mysql主从
https://blog.csdn.net/igxuyr_/article/details/81186969
ubuntu 16.04配置MySQL主从同步的配置方法
https://blog.csdn.net/weixin_44094872/article/details/85237714
Ubuntu下MySql5.7主从复制搭建
https://blog.csdn.net/apple9005/article/details/79068673
线上MYSQL同步报错故障处理方法总结(必看篇)
https://blog.csdn.net/sj349781478/article/details/79492895
MySQL主从同步报错故障处理集锦
https://www.cnblogs.com/wangxin37/p/6398755.html
2.slave案例
(1)usc 与 us151 搭建主从同步
主服务器 usc
IP:34.214.222.67
系统:Ubuntu 16.04
MySQL:5.7.27
从服务器 us151
IP:18.216.53.218
系统:Ubuntu 16.04
MySQL:5.7.27
1)主服务器数据库配置 -- 记得开启aws允许3306接口远程连接设置(only配置主服务器)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0 -- 默认是127.0.0.1 ,改成0.0.0.0允许远程连接
server-id = 1 -- 用来唯一的标识某个数据库实例的值,数值随意,但不可以重复
log_bin = /var/log/mysql/mysql-bin.log -- 开启binlog
binlog_format =mixed -- binlog的格式,包括mixed,statement,mixed
binlog_do_db = ceshi -- 指定binlog记录ceshi数据库,多个数据库需分行添加
binlog_do_db = ceshi2
binlog_ignore_db = mysql -- 指定binlog记录忽略的mysql数据库。
配置完后重启mysql
sudo service mysql restart
2)创建用于同步的用户账号
root登录mysql
mysql -u root -pb123456
创建用于同步的账号repl
CREATE USER 'repl'@'18.216.53.218' IDENTIFIED BY 'atNVhX8aEfXT3b9A';
#分配权限REPLICATION SLAVE
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'18.216.53.218';
#刷新权限
flush privileges;
可查看user的账号和授权的ip;
select Host,user from mysql.user;
查看日志文件
show master status ;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 771 | | | |
+------------------+----------+--------------+------------------+-------------------+
记录master_log_file 的值 mysql-bin.000001,master_log_pos的值771
3)从服务器数据库配置
server_id = 2
log_bin =/var/log/mysql/mysqlbin.log
slave_skip_errors = all
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库
配置完后重启mysql
sudo service mysql restart
配置连接主服务器ip及登录账号:
change master to master_host='34.214.222.67',master_port=3306,master_user='repl',master_password='atNVhX8aEfXT3b9A',master_log_file='mysql-bin.000001',master_log_pos=771;
开始slave服务
start slave;
查看slave状态
show slave status\G;
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
验证
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
然后查看从数据时候有表和数据;
mysql> show databases;
(2)slave常用查询
0)查看日志开启状态
show variables like 'log_%';
1)查看所有binlog日志列表
show master logs;
2)查看最新一个binlog日志的编号名称,及其最后一个操作事件结束点
show master status;
3)刷新log日志,立刻产生一个新编号的binlog日志文件,跟重启一个效果
flush logs;
4)清空所有binlog日志
reset master;
5)日志查看,因为是二进制文件没法用vi等打开,可以用mysql的mysqlbinlog打开
/usr/bin/mysqlbinlog /home/logs/mysql-bin.000001
(3)登录slave
得到主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复。
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.001432 | 64787138 | | | |
+------------------+----------+--------------+------------------+-------------------+
先保证从服务器的slave是关闭的
stop slave
slave从当前二进制日志名和偏移量
change master to master_host='54.223.182.40', master_user='odsdb',master_password='xqkP0kplDAIIMPkS',master_log_file='mysql_bin.001432',master_log_pos=64787138;
查看主从库状态。
-- master
show master status\G
-- slave
SHOW SLAVE STATUS\G