准备工作:
CentOS Linux 作为主服务器。
MacOS 作为从服务器。
MySql版本:5.6
1.系统搭建:
在Mac电脑中使用Parallels Desktop运行CentOS6.5虚拟机。
(可能遇到的问题版本 Parallels Desktop10.1.0 可能无法安装CentOS7 以上的版本,建议安装6.5)
2.CentOS中安装Mysql
不要直接使用YUM去安装MYSQL,因为安装的mysql版本是5.1的。安装5.6版本要遵循以下步骤:
Linux终端下:
(1)wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm 把mysql的5.6的Yum库下载到本地
(2)yum install mysql-community-server 进行安装
(3)设置初始密码 mysqladmin -u root password 123456 验证登陆mysql -u root -p 回车 输入密码
(4)开启远程连接
use mysql
Update user set host='%' whereuser='root';
(5)开启防火墙,否则远程数据工具可能无法连接。
环境搭建完毕。
Mac上的Mysql同理进行搭建
3.主从配置
CentOS主服务器
IP:10.211.55.14 MYSQL USER:root PASSWORD:123456
创建同步测试用的数据库:student_manager
MAC从服务器
IP:127.0.0.1 MYSQL USER:root PASSWORD:123456
(1)配置CentOS的master mysql配置文件 vim /etc/my.cnf
[mysqld]
log-bin = mysql-bin #二进制日志
server-id=1 #此处指定mysql的id,主从myslq都需要指定不同的id
binlog-do-db=student_manager #指定需要同步的数据库,多个数据库逗号隔开
binlog-ignore-db=mysql #需要忽略同步的数据库 mysql这是配置数据,无需同步
保存退出。重启mysql
(2)配置Mac 的 salve mysql 配置文件 vim my.cnf
[mysqld]
log-bin=mysql-bin
server-id=2 |
|
#此处需要配置和master mysql不同的id |
replicate-do-db=student_manager #配置同步的数据库 和master保持一致
replicate-ignore-db=mysql #忽略同步的数据库
重启mysql
注意:坑!网上很多配置教程,直接在my.cnf文件中写入账号和密码等信息,这是在mysql5.1之后就已经废除了,如果照搬mysql会报错!
(3)Master mysql 授权
进入主Mysql命令终端
grant replication slave on *.* to 'root'@'%' identified by '123456'with grant option;
以下语句解析:允许来自于127.0.0.1的slave mysql 通过 root 账号和123456密码进行连接。注意此处的root是master mysql中的账号密码。完全可以创建一个新的账号密码供salve连接使用。 Master mysql上是不理会salve自身的账号密码的。
grant replication slave on *.* to 'root'@'127.0.0.1' identified by '123456' with grant option;
(4)master日志
将master中student_manager 数据库导出sql,然后锁定或关闭数据库不允许写
Master 终端输入:show master status
mysql> show master status;
+------------------+----------+-----------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |Executed_Gtid_Set |
+------------------+----------+-----------------+------------------+-------------------+
| mysql-bin.000003 | 2256 | student_manager | mysql | |
+------------------+----------+-----------------+------------------+-------------------+
1 row in set (0.00 sec)
(5)salve mysql 配置
进入salvemysql 终端
stop salve; #停止已有的slave同步进程 (如果有的话)
change master tomaster_host='10.211.55.14',master_user='root',master_password='123456',master_log_file='mysql-bin.000003' ,master_log_pos=2256 ; #执行同步语句 .此处的master_log_file和master_log_pos就是master中的master status。指定日志文件中的固定位置。这就是主从同步的关键。
start slave;
Show slave status; #验证是否同步
******************************************************
Slave_IO_State: Waiting for master to send event
Master_Host:10.211.55.14 Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 7131
Relay_Log_File:MySQLSlave-relay-bin.000003
Relay_Log_Pos: 2256
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: osyunweidb
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
1 row in set (0.00 sec)
注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!
配置完成
4.验证
(1)进入master终端在student_manager 中创建表,然后在salve就可以看到同样的表了!
注意:坑!千万不能使用数据库工具连接master slave进行创建数据,否则是不会发生同步的!