本文共 1467 字,大约阅读时间需要 4 分钟。
数据库是应用系统的核心,为了保证数据库的安全采用主从热备是很常见的方法,也就是主数据库DDL、DML都将被同步到从数据库。
操作系统:windowsserver 2008 R2
数据库:mysql-advanced-5.6.21-winx64
1、 把需要同步的数据库实例从主数据库备份出来,然后手动导入从数据库,以保证数据库同步的时候主从数据库是一致的。
2、 配置主数据库所在操作系统的防火墙,开放数据库访问端口,默认端口3306。
C:\soft\mysql-advanced-5.6.21-winx64\my.ini
如果ini文件名是my-default.ini修改为my.ini。
[mysqld]#[必须]服务器唯一ID,默认是1,一般取IP最后一段server_id = 41 #[必须]启用二进制日志log_bin=mysql-bin#需要备份的数据库名 多个库以逗号分隔binlog-do-db =test#若涉及及同步函数或者存储过程需要配置,否则主备会产生异常不能同步log_bin_trust_function_creators=TRUE
C:\soft\mysql-advanced-5.6.21-winx64\my.ini
如果ini文件名是my-default.ini修改为my.ini。
[mysqld]#[必须]服务器唯一ID,默认是1,一般取IP最后一段server_id = 44
停止服务net stop mysql启动服务net start mysql
grant replication slave on *.* to 'tantuls'@'%' identified by '123456';
一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.1.44,加强安全。
检测授权结果select * from user where host='%' and user='tantuls'\G;
如果Repl_slave_priv项为Y,表示授权成功。
show master status;注:执行完此步骤后不要再操作主服务器 MYSQL ,防止主服务器状态值变化
mysql> change master to master_host='192.168.1.41',master_user='tantuls',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=326;
如果slave处于启动状态,则先执行stopslave命令停止,再执行changemaster to…配置slave,最后执行start slave启动slave。
show master status;
其中下面两项都必须为yes。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在主数据库test数据库实例中创建一个数据库表tt,在从数据库执行查看对应数据库实例下是否新建了一个名为tt的表。
主库建表:
从库检测表是同步过来: