mysql在ubuntu环境下配置主从数据学习笔记

来源:互联网 发布:用友软件招聘信息 编辑:程序博客网 时间:2024/05/29 10:56

  本来是很简单的一个配置,但是因为mysql版本的原因致使照着网上别人的文章花了老鼻子力气也没配出来。现在把整个过程记录下来以供以后使用的时候有所参照! 

  纸上得来终觉浅 绝知此事要躬行!切记切记!

首先装备Ubuntu环境,我本机用的是ubuntu-12.04.3-desktop-amd64版本。

   第一步,建立两个ubuntu的虚拟机

    ubuntu 主: 192.168.80.129

    ubuntu 备: 192.168.80.130

  第二步,分别建立mysql:

    1.命令行下执行 sudo apt-get install mysql-server

       执行中间会要求输入root的密码,整个过程不报错,则安装成功。我当前的安装后的mysql版本是5.5.38-0ubuntu0.12.04.1-log


    2.分别为2台服务器上的mysql修改root账号密码

   用root账号,密码不输登陆mysql,选择mysql数据库 use mysql
   update user set password=password('newpassword') where user='root';
   flush privileges;  #一定要刷新,不然不生效

   3.分别为2台机器设置允许其他主机远程连接mysql服务

      GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%'   WITH   GRANT   OPTION     //赋予任何主机访问数据的权限  
      flush privileges; 

      执行完后最好重启mysql服务!

  4.创建共享数据库

   分别登录master机和slave机的mysqlmysql –u root –p

   创建数据库:create database testrep;

 

  5.修改master机器中mysql配置文件my.cnf,该文件在/etc目录下

   sudo gedit /etc/mysql/my.cnf

             在[mysqld]配置段添加如下字段

       server-id=129
       log-bin=log
       binlog-do-db=testrep
      binlog-ignore-db=mysql 

 

master机上为slave机添加一同步帐号
grant replication slave on *.* to 'repl'@'192.168.80.130' identified by '123456';

 

重启master机的mysql服务:service mysqld restart


show master status 命令看日志情况

mysql>show master status;

+-----------------+------------+-------------------+-----------------------+

| File                | Position     | Binlog_Do_DB   | Binlog_Ignore_DB |

+-----------------+------------+-------------------+-----------------------+

|    log.000003 |           98  | repl                 | mysql                    |

+-----------------+------------+-------------------+-----------------------+

1 row in set (0.00 sec)


记录下File 和 Position的值,后续再slave机中设置slave备份需要。


6.修改slave机中mysql配置文件(有很多网上教程说在my.cnf中配置master-host等master开头的参数,结果在本mysql版本中,配置了识别不了,坑爹!最好是改为用change master方式解决

同样在[mysqld]字段下添加如下内容

server-id=130
replicate-ignore-db=mysql
replicate-do-db=testrep

 

然后重启slave机的mysql

 

slave机中进入mysql

再首先执行 stop slave;

然后执行 change master to master_host='192.168.80.129', master_user='repl', master_password='123456',  master_log_file='log.000003' ,master_log_pos=98;  (此处值需和master机器中查出的一致)

最好执行

mysql>start slave;

mysql>show slave status\G;
如果Slave_IO_RunningSlave_SQL_Running状态为Yes则表明设置成功。



7、测试主从服务器是否能同步

在主服务器上面新建一个表,必须在testrep数据下

mysql> use testrep

Database changed

mysql> create table test(id int,name char(10));

Query OK, 0 rows affected (0.00 sec)

 

mysql> insert into test values(1,'zaq');

Query OK, 1 row affected (0.00 sec)

 

mysql> insert into test values(1,'xsw');

Query OK, 1 row affected (0.00 sec)

 

mysql> select * from test;

+------+------+

| id    | name |

+-------+------+

|    1    | zaq   |

|    1    | xsw |

+-------+------+

2 rows in set (0.00 sec)

 

 

 

在从服务器查看是否同步过来

mysql> usetestrep;

Database changed

mysql> select * from test;

+------+------+

| id    | name |

+------+------+

|     1 | zaq   |

|     1 | xsw |

+------+------+

2 rows in set (0.00 sec)

 

 

 

说明已经配置成功,第一种主从成功




再加一个备份slave,ubuntu 备2: 192.168.80.132, 执行步骤如第一个slave的配置后,第一种主从从成功


 接着实验双机互为主备:

    ubuntu 主备1: 192.168.80.129

    ubuntu 主备2: 192.168.80.130


   1.修改原 ubuntu 主备1: 192.168.80.129 的配置文件my.cnf

   server-id=129
   log-bin=log
  binlog-do-db=testrep
  binlog-ignore-db=mysql 
  replicate-ignore-db=mysql
  replicate-do-db=testrep

 auto_increment_offset = 1  
 auto_increment_increment = 2
双向同步避免自增长字段建值冲突,

  2.在master机上为slave机添加一同步帐号
grant replication slave on *.* to 'repl'@'192.168.80.130' identified by '123456';

 

重启master机的mysql服务:service mysqld restart


show master status 命令看日志情况

mysql>show master status;

+-----------------+------------+-------------------+-----------------------+

| File                | Position     | Binlog_Do_DB   | Binlog_Ignore_DB |

+-----------------+------------+-------------------+-----------------------+

|    log.000003 |           98  | repl                 | mysql                    |

+-----------------+------------+-------------------+-----------------------+

1 row in set (0.00 sec)


记录下File 和 Position的值为log.000004和107后续在(ubuntu 主备2)slave机中设置slave备份需要。


   3.进入ubuntu 主备2,修改ubuntu 主备2: 192.168.80.130 的配置文件my.cnf
  server-id=130
  binlog-do-db=testrep
  binlog-ignore-db=mysql 
  replicate-ignore-db=mysql
  replicate-do-db=testrep
  auto_increment_offset = 2  
  auto_increment_increment = 2 
  log-bin=log

    3.进入ubuntu 主备2,先stop slave,然后执行新的File和Position值得change master操作

      change master to master_host='192.168.80.129', master_user='repl', master_password='123456',  master_log_file='log.000004' ,master_log_pos=107;  

  然后重启slave,start slave;

查看show slave status\G;,出现如下两个YES则Slave备份配置成功

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

   4.ubuntu 主备2中为为slave用户(ubuntu 主备1: 192.168.80.129)添加同步专用权限

        grant replication slave on *.* to 'repl'@'192.168.80.129' identified by '123456';

        flush privileges;  


 6.再重启ubuntu 主备2:sudo /etc/init.d/mysql restart,然后再进入 mysql ,执行 show master status;
    获得最新的File 和 Position的值为'log.000001‘和107 ,后续在(ubuntu 主备1: 192.168.80.129)slave机中设置slave备份需要。

  7.再进入ubuntu 主备1,先stop slave,然后执行新的ubuntu 主备2的File和Position值得change master操作

      change master to master_host='192.168.80.130', master_user='repl', master_password='123456',  master_log_file='log.000001' ,master_log_pos=107;  

  然后重启slave,start slave;

查看show slave status\G;,出现如下两个YES则Slave备份配置成功

             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

 8.两边数据库随便建表,插入数据,删除数据等操作验证。


第三种互为主备的的主主模式成功

解决slave进程No的情况

http://zhidao.baidu.com/link?url=eewPAI9oQCes7umENqRdo3Z6Z5wXn_Qv7NuU_6iJ1PuFONUgtCJOoZvnzctsts_04BQ4ayZKFow7Xlpm0vicPq






   

0 0
原创粉丝点击