master: 192.168.31.108 端口号6033 CentOS6.5
slave: 192.168.31.134 端口号3306 CentOS7.3
CentOS7.3安装MySQL数据库(主从数据库版本应一致,避免出错)
1.下载并解压mysql-5.7.14-1.el7.x86_64.rpm-bundle.tar安装包
2.安装MySQL必要包,注意先后顺序
rpm -ivh mysql-community-common-5.7.14-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-5.7.14-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.14-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.14-1.el7.x86_64.rpm
如果安装失败,查看是否有对应的冲突包 rpm -qa,rpm -e --nodeps *****删除冲突包
3.启动MySQL服务 service mysqld start
4.查看随机密码
grep 'temporary password' /var/log/mysqld.log
5.登录MySQL服务
mysql -uroot -p
# 并输入查询的随机密码
6.重置MySQL密码
set password = password('new password');
7.重启服务 service mysqld restart
MySQL主从服务配置主服务必须有一个用户用于从服务同步,并具备REPLICATION SLAVE权限
GRANT REPLICATION SLAVE,FILE ON *.* TO 'slaveuser'@'192.168.31.134' IDENTIFIED BY 'slaveuser';
修改主服务器的/etc/my.cnf,开启二进制日志
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
binlog-do-db=yhc
innodb_flush_log_at_trx_commit=1
sync_binlog=1
重启主库后, 锁库并记录位置
-- 更改master数据库的状态为只读FLUSH TABLES WITH READ LOCK;
-- 查看master状态,并记录log_file和position show master status;
将主库数据文件手动复制到从库上
配置从库,修改/etc/my.cnf
server-id=2
relay-log=slave-relay-bin
重启从库后,
-- 登录从服务器数据库,连接上change master to master_host='192.168.31.108', master_port=6033, master_user='slaveuser',master_password='slaveuser', master_log_file='master-bin.000001', master_log_pos=0;
-- 启动从库
start slave;
解除主库的只读 UNLOCK TABLES;
检验
-- 查看slave运行状态show slave status\G;
Slave_IO_Running为NO
原因: 首先确认server-id 是否唯一, mysql 有可能并没有加载my.cnf 文件中的server-id 解决办法:
1.修改server-id (在my.cnf 文件中) ,
2. mysql> set global server_id=119; #此处的server_id的值和my.cnf里设置的一样
3. mysql> start slave;
Slave_SQL_Running为NO
原因: 从库被修改