RHEL6.4_64安装MySQL主从复制

MySQL是目前轻量级数据库MySQL的冗余方案之首选


以下是MySQL的异步主从复制的配置过程


先配置系统yum,此处不已源码包的安装过程为例来介绍了!

也不再介绍yum的配置过程,从安装mysql开始

此处用两个主机安装

master:192.168.0.111

slave:192.168.0.222

安装MySQL(主从两个节点上都安装)

yum -y install mysql mysql-server

创建mysql的数据目录(两个节点)

mkdir /opt/mysql_data && chown -R mysql.mysql /opt/mysql_data && chmod 766 /opt/mysql_data

配置mysqld(master节点)

编辑/etc/my.cnf内容如下,先启动mysql的(两个节点):

[mysqld]
character-set-server = utf8
datadir=/opt/mysql_data
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

启动mysqld:

service mysqld start && chkconfig --level 35 mysqld on

************************************************

注意:此处以主从复制为主题不讨论iptables

和SELinux,所以事先关闭SELinux和iptables

否则mysqld会起不来

************************************************

创建要同步的数据库和同步的用户(在master节点)

mysql> grant replication slave,reload,super on *.* to cai@192.168.0.222 identified by 'cai';                     //创建cai用户

Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to cai@192.168.0.222 identified by 'cai';
Query OK, 0 rows affected (0.00 sec)

mysql> create database caidb;                                                                                   //创建要同步的数据库
Query OK, 1 row affected (0.00 sec)

mysql> show databases; select user,host from mysql.user;                                //查看创建的库和用户信息
+--------------------+
| Database           |
+--------------------+
| information_schema |
| caidb              |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

+------+---------------+
| user | host          |
+------+---------------+
| root | 127.0.0.1     |
| cai  | 192.168.0.222 |
|      | localhost     |
| root | localhost     |
|      | master        |
| root | master        |
+------+---------------+
6 rows in set (0.00 sec)

在slave节点上尝试连接master,测试网络和用户的可用性:

[root@slave ~]# mysql -ucai -pcai -h 192.168.0.111 -e "select user,host from mysql.user;show databases;"                 //用cai登录远程数据库192.168.0.111,执行sql “show databases”
+------+---------------+
| user | host          |
+------+---------------+
| root | 127.0.0.1     |
| cai  | 192.168.0.222 |
|      | localhost     |
| root | localhost     |
|      | master        |
| root | master        |
+------+---------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| caidb              |
| mysql              |
| test               |
+--------------------+

在要同步的数据库中创建表和模拟数据(在master)

mysql> create table `caitable` (`id` int(5) NOT NULL auto_increment, `name` varchar(32) NOT NULL, `password` char(32) NOT NULL, PRIMARY KEY (`id`));   //创建表

插入模拟数据用一下脚本:

[root@master ~]# cat ist.sh
#!/bin/bash
for ((i=1; i<=10; i++))                   //循环插入10条数据
do
mysql -uroot -e "insert into caidb.caitable(id,name,password) value ('$i','user$i',md5('usercai$i'));"
done
mysql -uroot -e "select * from caidb.caitable;"                 //查询插入的数据

然后到处master的数据导入slave的数据库中

导出(在mater):

[root@master ~]# mysqldump -uroot caidb > caidb.sql

[root@master ~]# scp caidb.sql 192.168.0.222:~/
root@192.168.0.222's password:
caidb.sql 
*************************************************************************************

注意:此处执行scp如果某个节点报bash: scp: command not found

就执行yum -y install openssh-clients

*************************************************************************************

然后在slave上创建数据库并导入数据

mysql> create database caidb;                //创建slave的数据库
Query OK, 1 row affected (0.00 sec)

mysql> exit
Bye
[root@slave ~]# mysql -uroot caidb<caidb.sql            //导入从master上到处的数据
[root@slave ~]# mysql -uroot -e "select * from caidb.caitable;"                   //查看数据是否导入
+----+--------+----------------------------------+
| id | name   | password                         |
+----+--------+----------------------------------+
|  1 | user1  | 848bbbf06aeba9495a47578569cee381 |
|  2 | user2  | 4b1700e322bf3619376ef6df33d4a68d |
|  3 | user3  | 6238fe4a6ae91fb4e4c364dab46f3570 |
|  4 | user4  | e695fa61724b69ef58b3ff38d6d26322 |
|  5 | user5  | f0bab2bf65014192d9bc6e139ba5d520 |
|  6 | user6  | be56605958ccaabfa9eeb6d5d33dd075 |
|  7 | user7  | fec2992b831f761e61c1f406f1c0e7ec |
|  8 | user8  | 4ab3f2d0a35ca849e86ddc9a7856500a |
|  9 | user9  | 77998b564bf7cd7db0df7b57538e93f8 |
| 10 | user10 | d7d61d43582dbae4395dc298bc8c6d80 |
+----+--------+----------------------------------+


配置master的my.conf文件,在mysqld部分加入一下内容:

server-id     = 1                     //server id

log_bin       = /var/log/mysql/mysql-bin.log           //binlog的位置

binlog_do_db        = high                             //要同步的数据库

binlog_ignore_db = mysql                           //忽略不同步的数据库

然后重启master的mysqld

*********************************************************************

注意:此处配置的时候最好别加注释,因为本人写c程序成惯性了

注释一般用“//”比较顺手,所以请加入配置文件的时候去掉注释或者

改用“#”作为注释符

**********************************************************************

配置slave,在my.cnf的mysqld加入如下内容:

server-id = 2                     //server id不可以重复
master-host = 192.168.0.111                //master的ip地址
master-user = cai                                  //用这个用户获取binlog
master-password = cai                         //用户密码
重启slave的mysqld

将获得master的状态(在master上)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 | caidb        | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

记住file字段的binlog的名字


首次手动同步slave的slave复制(在slave上)

mysql> slave stop;                                 //停止slave
Query OK, 0 rows affected (0.00 sec)

mysql> change master to master_host='192.168.0.111',master_user='cai',master_password='cai',master_log_file='mysql-bin.000001',master_log_pos=106;          //master_log_file是上述查看master状态里的File字段,master_log_pos是查看马赛特如状态里的Position字段,注意:master_log_post后边的值不加单引号
Query OK, 0 rows affected (0.03 sec)

mysql> slave start;                   //启动slave
Query OK, 0 rows affected (0.00 sec)

在slave节点上执行如下语句,如果返回的众多值里,这两个值的状态如下,则说明已经配置成功了:

[root@slave ~]# mysql -uroot -e "show slave status"

Slave_IO_Running               Yes

Slave_SQL_Running          Yes

#########################################################

测试主从复制

首先在master上更改caidb中的东西如下:

mysql> select * from  caitable; select * from caitest;
+----+--------+----------------------------------+
| id | name   | password                         |
+----+--------+----------------------------------+
|  1 | user1  | 848bbbf06aeba9495a47578569cee381 |
|  2 | user2  | 4b1700e322bf3619376ef6df33d4a68d |
|  3 | user3  | 6238fe4a6ae91fb4e4c364dab46f3570 |
|  4 | user4  | e695fa61724b69ef58b3ff38d6d26322 |
|  5 | user5  | f0bab2bf65014192d9bc6e139ba5d520 |
|  6 | user6  | be56605958ccaabfa9eeb6d5d33dd075 |
|  7 | user7  | fec2992b831f761e61c1f406f1c0e7ec |
|  8 | user8  | 4ab3f2d0a35ca849e86ddc9a7856500a |
|  9 | user9  | 77998b564bf7cd7db0df7b57538e93f8 |
| 10 | user10 | d7d61d43582dbae4395dc298bc8c6d80 |
+----+--------+----------------------------------+
10 rows in set (0.00 sec)

Empty set (0.00 sec)

mysql> insert into caidb.caitable(id,name,password) value ('17','user14',md5('usercai14'));
Query OK, 1 row affected (0.00 sec)

mysql> insert into caidb.caitable(id,name,password) value ('11','user14',md5('usercai14'));
Query OK, 1 row affected (0.00 sec)

mysql> insert into caidb.caitable(id,name,password) value ('12','user14',md5('usercai14'));
Query OK, 1 row affected (0.00 sec)

mysql> insert into caidb.caitable(id,name,password) value ('14','user14',md5('usercai14'));
Query OK, 1 row affected (0.00 sec)

mysql> create table `caitest` (`id` int(5) NOT NULL auto_increment, `name` varchar(32) NOT NULL, `password` char(32) NOT NULL, PRIMARY KEY (`id`));
Query OK, 0 rows affected (0.02 sec)

然后去slave上查看

[root@slave ~]# mysql -uroot -e "select * from caidb.caitable; use caidb; show tables"
+----+--------+----------------------------------+
| id | name   | password                         |
+----+--------+----------------------------------+
|  1 | user1  | 848bbbf06aeba9495a47578569cee381 |
|  2 | user2  | 4b1700e322bf3619376ef6df33d4a68d |
|  3 | user3  | 6238fe4a6ae91fb4e4c364dab46f3570 |
|  4 | user4  | e695fa61724b69ef58b3ff38d6d26322 |
|  5 | user5  | f0bab2bf65014192d9bc6e139ba5d520 |
|  6 | user6  | be56605958ccaabfa9eeb6d5d33dd075 |
|  7 | user7  | fec2992b831f761e61c1f406f1c0e7ec |
|  8 | user8  | 4ab3f2d0a35ca849e86ddc9a7856500a |
|  9 | user9  | 77998b564bf7cd7db0df7b57538e93f8 |
| 10 | user10 | d7d61d43582dbae4395dc298bc8c6d80 |
| 12 | user14 | 335007a617140b0431d5c8dd51830e68 |
| 11 | user14 | 335007a617140b0431d5c8dd51830e68 |
| 17 | user14 | 335007a617140b0431d5c8dd51830e68 |
| 14 | user14 | 335007a617140b0431d5c8dd51830e68 |
+----+--------+----------------------------------+
+-----------------+
| Tables_in_caidb |
+-----------------+
| caitable        |
| caitest         |
+-----------------+

可见新插入的数据和新建的表caitest均已被复制过来了,至此mysql的主从复制配置完成!



##########################################

本文属于作者原创

作者:john

转载请注明出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值