MySQL Master-Slave Replication
2016-04-11 16:06
671 查看
环境介绍
VMware Workstation 12 虚拟机x2(可以使用克隆,但是要在安装数据库之前克隆,安装之后克隆会出现相同UUID的情况,无法进行主从复制)
MySQL 5.7 Community 完全包下载地址:http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.11-1.el7.x86_64.rpm-bundle.tar
安装MySQL
安装MySQL的过程不再赘述。安装完成后,启动MySQL服务,使用mysql_secure_installation进行配置时需要默认的root用户密码,密码在/var/log/mysqld.log. 查询password会找到默认的密码。配置Master端
创建Slave用户# mysql -u root -p mysql> grant replication slave on *.* TO slave@'slave服务器的ip' identified by 'slave用户的密码'; mysql> flush privileges; mysql> quit
修改/etc/my.cnf 加入
bind-address = 0.0.0.0 server-id = 1 log-bin = mysql-bin binlog-ignore-db = "mysql"
重启MySQL服务器
#service mysqld restart
在主从复制前,要保证两端数据库状态,内容一致,如果主从两端均为新安装的服务器,可以忽略这步
# mysql -u root -p mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS;
导出数据库至SQL脚本
# mysqldump -u root -p --databases 数据库1 数据库2 > /root/db_dump.sql
解除数据库Read Lock
# mysql -u root -p mysql> UNLOCK TABLES;
把导出的SQL脚本传输到Slave端
scp /root/db_dump.sql [private-IP-of-db02]:/root/
配置Slave端
修改/etc/my.cnf 加入bind-address = 0.0.0.0 server-id = 2
导入SQL脚本,并重启数据库(如果主从两端都是新安装的数据库可以忽略)
# mysql -u root -p < /root/db_dump.sql # service mysqld restart
进入Slave端的MySQL命令行
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='Master端IP地址', MASTER_PORT=端口号, MASTER_USER='slave', MASTER_PASSWORD='slave用户的密码'
启动Slave端
mysql> START SLAVE; mysql> SHOW SLAVE STATUS\G
验证一下Master和Slave之前的数据是否被复制,在Master端
# mysql -u root -p mysql> create database testing; mysql> use testing mysql> create table users(id int not null auto_increment, primary key(id), username varchar(30) not null); mysql> insert into users (username) values ('foo'); mysql> insert into users (username) values ('bar'); mysql> exit
在Slave端
mysql> use testing; mysql> select * from users;
应该能看到我们在Master端简历的表和数据了
Slave端无法更新数据
<span style="font-family: 'Microsoft YaHei';">mysql> stop slave;</span>
mysql> reset slave; mysql> master change to master_host='10.1.18.100',master_port=3306,master_user='slave',master_password='Slave的密码',
master_log_file='master端当前的日志',master_log_pos=master日志的当前编号;
mysql> start slave;
修复后可能会造成数据和Master端不一致的情况,所以先清空Slave库,并用Master导出的数据库脚本进行重建,然后恢复Slave端的设置。
相关文章推荐
- MySQL中的integer 数据类型
- Linux socket 初步
- MySQL存储过程
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件