我的镜像里面有数据库,我直通通过复制镜像开创建虚拟机的!!
数据库的版本是5.7.27
主库是192.168.50.173
从库是192.168.50.174
这一步不一定要做,看个人
mysql> update user set host=’%’ where user=‘root’; 修改为任何地址都能登录
mysql> flush privileges; 刷新用户权限
主库上操作
[root@master ]
vim /etc/my.cnf
log_bin=master //启动SQL日志,并指定文件名前缀(可以随便取)
server_id = 10 //指定服务器ID号,不要与Master的相同
binlog-ignore-db= mysql //二进制日志中忽略数据库
binlog_format=mixed //Mixed:混合模式(Row+Statement)。Row:行模式。记录每条数据详细变更内容和所有字段,日志会比较大。Statement:语句模式。记录的只是执行语句,减少了日志量。
重启数据库服务器后创建一个授权用户
mysql> GRANT REPLICATION SLAVE ON . TO ‘replicater’@’%’ IDENTIFIED BY ‘pwd123’;
mysql> show master status;
±--------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±--------------±---------±-------------±-----------------±------------------+
| master.000001 | 154 | | | |
±--------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)
这样就做好了主库了
从库上的操作
[root@slave ]
vim /etc/my.cnf
server_id = 20
replicate-ignore-db = mysql 设定需要忽略的复制数据库
重启数据库服务器指定MASTER服务器的IP地址、同步用户名/密码、起始日志文件、偏移位置(参考MASTER上的状态输出)
mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.50.173’,
-> MASTER_USER=‘replicater’,
-> MASTER_PASSWORD=‘pwd123’,
-> MASTER_LOG_FILE=‘master.000001’, //对应Master的日志文件
-> MASTER_LOG_POS=154;
mysql> START SLAVE; //启动复制
mysql> SHOW SLAVE STATUS\G; //检查Slave服务器的同步状态
查看同步状态发现有问题
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work
原因是我是通过镜像开启虚拟机的,数据库的/var/lib/mysql/auto.cnf文件的uuid都一样,随便改一个数字就行了
额外
[root@test173 ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since 五 2019-08-30 11:08:06 CST; 1min 7s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 9301 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 9280 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 7457 (code=exited, status=0/SUCCESS)
出现这个提示查看数据库的目录权限
ls -lh /var/lib/mysql