• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
MYSQL主备复制结构的搭建和切换
发布日期:2016-4-25 16:4:17

     1.选择两个服务器,分别作为主备数据库

   2. 登陆至服务器,安装相同版本MySQL

    代码如下所示:

    [sql] view plain copyyum install mysql ;

     yum install mysql-server;

   3. 启动mysql服务器

   代码如下所示:

  service mysqld start

  4.分别root登陆mysql 执行下面所示的命令

  增加复制用户并授权(主备都在192.168.119.*网段,为了方便主备切换,两边都建立),代码如下所示:

  [sql] view plain copyGRANT REPLICATION SLAVE,REPLICATION CLIENT on *.* to repl@'192.168.119.%' identified by '1234';

  5. 配置/etc/my.cnf

      代码如下所示:

  第一服务器(主)

  [sql] view plain copylog_bin=mysql-bin

  server_id=1

  第二个服务器(备)

  [sql] view plain copylog_bin=mysql-bin

  server_id=2

  read_only=1

  6. 重启两个mysql服务器

  7.登陆主(root)执行

    代码如下所示:

  [sql] view plain copyshow master status\G;

  将显示

  File: mysql-bin.000001

  Position: 106

  8.登陆备(root) 执行

  测试一下 mysql -urepl -h192.168.119.128 -p1234 是否能连接到主库,不能需要检查防火墙或/etc/my.cnf是否有访问限制,请修改配置

  mysql -uroot登陆本地库执行,代码如下所示:

  [sql] view plain copyCHANGE MASTER TO

  MASTER_HOST='192.168.119.128',

  MASTER_USER='repl',

  MASTER_PASSWORD='1234',

  MASTER_LOG_FILE='mysql-bin.000001',

  MASTER_LOG_POS=106;

  [sql] view plain copystart slave;

  show slave status\G;

  9.验证

  主库上创建表,备库上查看,可以看到以下:

  备库上repl创建表,显示The MySQL server is running with the --read-only option so it cannot execute this statement

  因原因是配置了备库为read_only

  10.后续关注

  以后重启主备库,不用再配置change master。每重启一次主库会发现logfile 变成一个新的文件mysql-bin.000004

  11.主从切换

  第一步: 修改配置文件/etc/my.cnf,代码如下所示:

  [sql] view plain copyread-only=1(主库)

  #read-only=1(备库)

  第二步: 从库上执行,代码如下所示:

  [sql] view plain copySTOP SLAVE IO_THREAD;

  SHOW PROCESSLIST;

  system user 线程确保状态为:has read all relay log 或者消失

  再执行以下代码:

  [sql] view plain copySTOP SLAVE;

  RESET MASTER;

  RESET SLAVE;

  show master status \G;

  结果如下所示:

  File: mysql-bin.000001

  Position: 106

  第三步:主库上执行,代码如下所示:

  [sql] view plain copyRESET MASTER;

  RESET SLAVE;

  [sql] view plain copyCHANGE MASTER TO

  MASTER_HOST='192.168.119.129',

  MASTER_USER='repl',

  MASTER_PASSWORD='1234',

  MASTER_LOG_FILE='mysql-bin.000001',

  MASTER_LOG_POS=106;

  [sql] view plain copystart slave

  第四步: 重启主备库,要注意先重启新的主库,再启动新的备库,代码如下所示:

  [sql] view plain copyservice mysqld restart

  第五步: 验证

  原来的主库已经变成从库,从库变成主库。