您的位置:首页 > 数据库 > MySQL

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

2015-04-10 22:21 746 查看
本来是很简单的一个配置,但是因为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机的mysql:mysql
–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_Running、Slave_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: