mysql 数据库镜像是将主数据库内容镜像备份到从数据库,当出现主数据库错误可以及时用从数据库顶替或者从从数据库回复数据的一种方式。
配置主从镜像,需要分别配置主数据库和从数据库的配置文件,然后重启数据库才能生效。
停数据库
#mysql.server stop
数据库配置文件,通常为 /etc/my.cnf
#vi /etc/my.cnf
找到 server-id 配置项,一般在 [mysqld] 配置下
增加:
server-id=1 log-bin=/var/db/mysql/master.log //BIN日志路径 #binlog-do-db=要同步的数据库名称 //不写就同步全部。如果备份多个数据库,重复设置这个选项即可 #binlog-ignore-db = mysql //忽略的数据库,如果不备份多个数据库,重复设置这个选项即可
启动数据库
#mysql.server start mysql> show master status;//查看主服务器状态
在主服务器上创建从服务器同步数据要的帐号,如果多台,建议统一帐号便于管理。
一般创建帐号命令如下:
grant replication slave,reload,super,select on *.* to "用户名"@"从数据库地址" identified by "密码"
其中红色部分为帐号权限,蓝色部分为需要自行定制的帐号密码已经从数据库服务器 IP 地址
这一步也可以通过 phpadmin 进行配置
停数据库
#mysql.server stop
#vi /etc/my.cnf
找到 server-id 配置项,一般在 [mysqld] 配置下
增加:
server-id=2 master-host=主数据库服务器地址 master-user=连接主服务器的帐号 master-password=连接主服务器的密码 master-port=3306 master-connect-retry=60 #replicate-do-db=要同步的数据库 //如果备份多个数据库,重复设置这个选项即可 #replicate-ignore-db=不同步的数据库 //如果不备份多个数据库,重复设置这个选项即可
启动数据库:
#mysql.server start mysql> show slave status G; //查看从数据库状态
将主数据库目录下数据库文件拷贝到从数据库目录下,可以通过 rsync 或者通过 scp 等方式拷贝,这里建议使用 rsync 同步
配置主数据库服务器 rsync
#apt-get install rsync
编辑配置文件
#vi /etc/rsyncd.conf
将下面内容加入进去配置好:
uid = root gid = root use chroot = no max connections = 50 syslog facility = local5 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log [访问的名称] path = 要同步的数据库目录路径 comment = 说明 hosts allow = 允许的访问地址
配置从数据库 rsync
#apt-get install rsync
同步数据:
登陆主服务器锁库:
mysql> FLUSH TABLES WITH READ LOCK;
#rsync –av 主服务器地址 :: 访问的名称 从服务器数据库目录
例如:
#rsync –av 202.205.109.1::db3 /home/mysql/db3/
完成后解锁:
登陆主数据库解锁:
mysql>UNLOCK TABLES;
当配置好主和从数据库后,先主数据库服务器表:
登陆主服务器锁库:
mysql> FLUSH TABLES WITH READ LOCK;
登陆从数据库运行:
mysql>load data from master;
这个过程很慢,根据数据库大小不同,镜像时间不同,不建议使用,完成后解锁
登陆主数据库解锁:
mysql>UNLOCK TABLES;
在主库新建一个表或者创建个数据库,到从库查看,并查看下日志和运行状况等,如果没有问题表示成功