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
纸上得来终觉浅 绝知此事要躬行!切记切记!
首先装备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
相关文章推荐
- mysql互为主从复制配置笔记--未读,稍后学习
- ubuntu学习笔记5_MySQL基础功能及配置
- Java菜鸟学习笔记(2)--Ubuntu JDK环境变量配置与常见问题
- 学习笔记-python数据分析-环境配置
- 深度学习笔记1 ——Ubuntu16.04下caffe环境的配置(仅CPU)
- 【深度学习】笔记1_Ubuntu14.04下caffe环境的搭建,无GPU版本以及python可视化环境的配置
- 【深度学习】笔记10:Ubuntu16.04环境下配置caffe的步骤(无GPU版本)
- 大数据学习笔记(六)-Spark环境配置
- ubuntu环境下配置mysql主从复制
- Caffe_Linux学习笔记(一)基于Ubuntu16.04+CPU only+Python2.7环境下的Caffe配置
- caffe学习笔记1:ubuntu15.04下3分钟完成caffe环境配置(基于docker)
- MySQL学习笔记之一:安装与配置(Windows 7环境)
- Ubuntu 12.04 LTS 配置python数据挖掘编程环境与mySQL
- 大数据学习笔记-(二)启动集群&配置IDE环境
- 【深度学习】笔记14 windows下caffe的python接口的配置(数据的可视化环境)
- JDBC学习笔记----环境配置及连接MySQL
- 【配置服务器环境学习笔记】linux服务器配置php+mysql+Apache
- Java基础学习笔记(一)环境变量配置,数据类型,运算符,控制语句,循环语句
- 命令行中的数据科学-环境配置(学习笔记1)
- Mysql 5.5 主从数据复制(Master-Slave Replication)配置笔记