进入 mysql 创建用户
CREATE USER 'slave'@'%' IDENTIFIED BY 'flzx3qc1001'
查看用户信息
select * from mysql.user where user='slave' \G
设置权限
GRANT SELECT,REPLICATION SLAVE ON *.* TO 'slave'@'%';
查权限是否设置成功
select * from mysql.user where user='slave' \G
复制两个虚拟机
因为我是在虚拟机操作 所以只要复制就可以
同源策略,将主库的库文件复制到从库
注意,先要停止Mysql服务,主库从库都要停止。
service mysql stop
库位置/var/lib/mysql,mysql文件夹就是这个所有的库,需要把这个文件夹复制到从库。现将这个文件进行压缩。
tar -zcvf mysql.tar.gz ./mysql/
首先进入从库,查看从库是否有了这个压缩文件,并进行移动到从库的/var/lib/
cd /tmp/
mv mysql.tar.gz /var/lib/
将从库mysql文件夹进行备份,以防失败。
cd /var/lib/
mv mysql mysql.bak
将主库传过来的mysql.tar.gz 解压,这就完成了同源策略
tar -zxvf mysql.tar.gz
这时,就可以主从就都可以开启mysql服务了。
service mysql start
配置主库和从库
主库配置/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog-ignore-db=mysql //不进行主从复制的库
# 将bind-address注释,为了能够使用从库服务器IP登陆主库
#bind-address = 127.0.0.1
从库配置/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog-ignore-db=mysql
修改完后重启数据库
service mysql restart
查询主数据库状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
** 如果为空说明 数据库没重启。。 **
从库执行命令
CHANGE MASTER TO
MASTER_HOST='192.168.20.14',
MASTER_USER='slave',
MASTER_PASSWORD='flzx3qc1001',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
//CHANGE MASTER TO MASTER_HOST='192.168.20.14', MASTER_USER='slave', MASTER_PASSWORD='flzx3qc1001', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
参数解析
MASTER_HOST:主服务器IP
MASTER_USER:在主服务器中创建的帐号,slave
MASTER_PASSWORD:自己定义的密码, flzx3qc1001
MASTER_LOG_FILE:上一步查看的 主服务器的FILE文件,mysql-bin.000001
MASTER_LOG_POS:上一步查看的 主服务器的Postion位置,笔者是154
开始同步 从服务器执行
START SLAVE;
停止复制
STOP SLAVE;
查看状态
SHOW SLAVE STATUS \G
发现有一个错误
Last_IO_Errno: 1593
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
意思是 主的UUID 和 从的UUID 不可以一样, 就是复制虚拟机的原因。。。
删除 从服务器的 UUID配置
文件地址 /var/lib/mysql/auto.cnf
# 切换目录
cd /var/lib/mysql
# 重命名
mv auto.cnf auto.cnf.back
# 重启服务
service mysql restart
# 进入mysql 后 查看状态
SHOW SLAVE STATUS \G
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400