主从数据库数据同步,可以使用从数据库来实时备份主数据库,当主数据库被破坏,可以马上启用从数据库。
一、从C盘拷贝MYSQL到D盘,命名为MYSQL2
把"C:\MySQL" 修改为 "D:\MySQL2"
修改配置文件my.ini
[client]
port=3307
[mysqld]
port=3307
basedir="D:/MYSQL2/"
datadir="D:/MYSQL2/Data/"
安装一个新的MYSQL数据库,服务命名为MySQL2
在cmd命令行模式下
D:\MySQL2\bin>mysqld-nt install MySQL2 --defaults-file="D:\MySQL2\my.ini"
好了,我们来到服务,启动MySQL2,当然也可以命令提示符来停止与启动
net stop MySQL2
net start MySQL2
//====小技巧===//
1、如要修改MySQL2服务路径:
运行regedit,进入注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL2
修改ImagePath的数据
D:\MYSQL2\bin\mysqld-nt --defaults-file=D:\MYSQL2\my.ini MySQL2
2、如要删除服务
sc delete MySQL2
3、如果提示1067错误,请检查一下my.ini文件,basedir="D:/MYSQL2/",datadir="D:/MYSQL2/Data/"里面的路径是否写错了。或
检查一下注册表MySQL2的ImagePath数据,--defaults-file="D:\MySQL2\my.ini"里面的路径是否写错了;
二、主从数据库同步示例
主数据库的配置(my.ini)
[mysqld]
server-id = 1
log-bin=mysqld-bin
replicate-do-db=test
port=3306
从数据库的配置(my.ini)
[mysqld]
server-id = 2
log-bin=mysqld-bin
master-host = 127.0.0.1
master-user = slave
master-password = 123
master-port = 3306
master-connect-retry=5
replicate-do-db=test #需要同步的数据库,很关键
log-slave-updates
port=3307
配置好了之后
net stop MySQL
net start MySQL
net stop MySQL2
net start MySQL2
重启即可,主数据的操作会自动更新到从数据库中。需要注意点是,从数据库的数据结构要保持和主数据库一致,不然不能同步主数据库的数据。
//====小技巧===//
MYSQL2的命令提示符,可以通过设置环境变量来实现,修改mysql.exe为mysql2.exe即可
//锁定所有表(不需要停止MYSQL服务器,可以有读的功能,保持网站继续正常运行)
FLUSH TABLES WITH READ LOCK;
//解除锁定
UNLOCK TABLES;
//显示主数据库状态
SHOW MASTER STATUS \G
//显示从数据库状态
SHOW SLAVE STATUS \G
//设定不同步的数据库,这些库的修改不会记录到日志(可以添加多行)
binlog-ignore-db = test
//设置同步的数据库(设置“从数据库”的配置文件,如果主的MYSQL数据库很多,而从的MYSQL数据库只有一个数据库,操作其他数据库的时候就会报错,从而终止从数据库不能实时的更新)
replicate-do-db=test
//新建一个专门备份的用户(Repl_slave_priv: Y)
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
//在slave上执行 "LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER"(Select_priv: Y,File_priv: Y,Repl_slave_priv: Y)
GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123';
FLUSH PRIVILEGES;