在Windows下安装多个Mysql[主从数据库同步数据]

在Windows上安装多个Mysql[主从数据库同步数据]


主从数据库数据同步,可以使用从数据库来实时备份主数据库,当主数据库被破坏,可以马上启用从数据库。


一、从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;