完全屬於我自己的Blog,運行在我的路由器H218N上.記錄著我想記錄的文字.

04月 19

数据库主从服务器搭建(一主一从)

修改配置文件

修改MySQL配置文件如下
一般linux环境下配置文件路径是

/etc/mysql/my.cnf

修改配置文件前,先把MySQL服务关停,

# service mysql stop

在主服务器的配置文件添加一下内容

log-bin         = master-bin
log-bin-index   = master-bin.index
server-id       = 1
log-slave-updates 
slave-skip-errors #是跳过错误,继续执行复制操作

log-slave-updates 选项含义请参考数据库主从服务器搭建(克隆Master与克隆Slave)后续补充部分

!!注意!!
必须注释掉这个配置项或者添加各服务器的IP

bind-address           = 127.0.0.1

修改配置完毕后,启动MySQL服务,登录并进行以下操作

master > CREATE USER repl_user ;/*! repl_user是从服务器登录到主服务器时的用户名*/
master > GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'password';/*! 为从服务器用户设置登录允许登录域及登录密码 password */

在从服务器的配置文件添加一下内容

log-bin         = master-bin
log-bin-index   = master-bin.index
server-id       = 2
relay-log-index = slave-relay-bin.index
relay-log       = slave-relay-bin
log-slave-updates #log-bin 用于启动数据库的更新日记,当针对启动这个选项的数据库本身进行数据跟新时更新操作将被记录。log-slave-updates 告诉Slave在二进制记录中记录从主数据库同步到的更新数据。如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。
slave-skip-errors #是跳过错误,继续执行复制操作

修改配置完毕后,启动MySQL服务,登录并进行以下操作

##下面的是设置从服务器登录到主服务器的相关信息
slave > CHANGE MASTER TO 
     -> MASTER_HOST = 'master_ip/master_hostname', /*! master_ip/master_hostname是主服务器的IP或者主机名*/
     -> MASTER_PORT = 3306, /*! 主服务器的MYSQL 端口*/
     -> MASTER_USER = 'repl_user', /*! 主服务器设置让从服务器登录的用户名*/
     -> MASTER_PASSWORD = 'password'; /*! 主服务器设置让从服务器登录的密码*/
##如果主从数据服务器数据不完全一样,应尽量同步成一样的,否则当主服务器新建一个与从服务器已存在的数据库重名的数据库时,从服务器在同步主服务器数据时会出错.
##然后在主服务器上执行
reset master;
##在从服务器上执行
reset slave;

##总体原则,保持主从服务器数据一致,log-bin所在pos一致
slave > START SLAVE;/*! 开始监控主服务器的改变并保存到从服务器 */

##下面两句是为创建一个用户,供主服务器挂掉,恢复过来后,从新主服务器同步数据时使用
slave > CREATE USER repl_user2 ;/*! repl_user2是新从服务器登录到新主服务器时的用户名*/
slave > GRANT REPLICATION SLAVE ON *.* TO repl_user2 IDENTIFIED BY 'password';/*! 为从服务器用户设置登录允许登录域及登录密码 password */

主服务器挂掉,将从服务器设为新的主服务器

在从服务器上执行

stop slave io_thread;
show  processlist\G

确保看到 State: Has read allrelay log;
把原从服务器设为新的主服务器。在这台服务器上执行:

stop slave;
reset master;

当挂掉的原主服务器恢复的时候,可以让原主服务器成为新主服务器的从服务器,这样可以得到原主服务器挂了以后的新主服务器更新

CHANGE MASTER TO 
MASTER_HOST = 'master_ip/master_hostname', 
MASTER_PORT = 3306, 
MASTER_USER = 'repl_user2', 
MASTER_PASSWORD = 'password';

start slave;

现在原主服务器成为了新主服务器的从服务器,原主服务器挂了以后的新主服务器更新到原主服务器了.

ps.数据复制中断时 参考http://www.bestrun.org/?p=222

标签:MySQL, 主从服务器, 数据库

还不快抢沙发

添加新评论