阿里云centos配置mysql主从复制

1.安装jdk1.8

首先确定没有安装过jdk


2.yum –y list  java*查询系统自带的jdk安装包情况。

3.安装jdk1.8


4. 验证安装结果。

 

 

 

安装mysql

1. rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

2. yum -y install mysql-community-server

3.加入开机启动:systemctlenable mysqld

4. 启动mysql服务进程:启动mysql服务进程systemctlstart mysqld

5.修改mysql root的密码:

第一次设置root密码可以使用以下命令:

mysqladmin -u root password NEWPASSWORD

如果你已经设置过密码了,需要要以下命令:

 

1

mysqladmin -u root -p'oldpassword' passwordnewpass

比如说,旧密码是“12345”,新密码是“nowamagic”,执行以下命令:

 

1

mysqladmin -u root -p'12345' password'nowamagic'

修改其它MySQL用户的密码

 

修改一个普通用户的密码你可以使用以下命令,比如用户是 nmuser:

 

1

mysqladmin -u nmuser -p oldpasswordpassword newpass

另一种修改密码的方法是,MySQL 服务器把用户名和密码储存在 MySQL 数据库的 user 表中。你可以使用以下方法来直接更新用户 nmuser 的密码:

 

1. 登录mysql服务器:

mysql -u root -p

2. 选择 MySQL 数据库

mysql> use mysql;

3. 修改 nmuser 密码

mysql> update user setpassword=PASSWORD("NEWPASSWORD") where User='nmuser';

4. 重置权限

mysql> flush privileges;

mysql> quit

这种方法也可以用脚本(PHP,Perl)执行,不用SSH到服务器。

 

 

主从配置

 

1. 分别登录master机和slave机的mysql:mysql –u root –p

 

创建数据库:create database repl;

 

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

 

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

 

server-id=1

 

log-bin=log

 

binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库

 

binlog-ignore-db=mysql //被忽略的数据库

 

 

在master机上为slave机添加一同步帐号

grant replication slave on *.* to'repl'@'192.1681.220' identifiedby '123456';

表示192.1681.220上的slave可以使用repl/123456帐号在master机器上进行replication同步数据的操作。

3 . 重启master机的mysql服务:servicemysqld restart

 

4. 用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)

 

5. 修改slave机中mysql配置文件my.cnf。

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

server-id=2

 

在从库上执行如下命令:

 

 

change master tomaster_host='10.171.244.109',

 

master_user=' repl ',

 

master_password='123456',

 

master_log_file=" log.000003",

 

master_log_pos=98;

 

表示用帐号密码登录到master库上去,在master库的log.000003 binlog的98位置处开始做数据同步操作了。

 

然后重启slave机的mysql。

 

6. 在slave机中进入mysql

 

mysql>startslave;//开启io线程。

 

mysql>showslave status  \G;

如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。

 

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

 

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

 

mysql> use repl

 

Database changed

 

mysql> create table test(idint,namechar(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> use repl;

 

Database changed

 

mysql> select * from test;

 

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

 

| id |name |

 

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

 

| 1 | zaq |

 

| 1 | xsw |

 

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

 

2 rows in set (0.00 sec)

说明已经同步成功了。

注意一定要在主库上进行增加,修改和删除的操作,然后同步到从库去,从库只能提供查询,不能对从库的数据进行增加,修改和删除的操作。

 

原理探究

 

 

 

MySQL同步功能由3个线程(master上1个,slave上2个)来实现。执行 STARTSLAVEDE语句后,slave就创建一个I/O线程。I/O线程连接到master上,并请求master发送二进制日志中的语句。master创建一个线程来把日志的内容发送到slave上。这个线程在master上执行SHOW PROCESS LIST 语句后的结果中的 Binlog Dump 线程便是。slave上的I/O线程读取master的 Binlog Dump线程发送的语句,并且把它们拷贝到其数据目录下的中继日志(relay logs)中。第三个是SQL线程,salve用它来读取中继日志,然后执行它们来更新数据。

       如上所述,每个master/slave上都有3个线程。每个master上有多个线程,它为每个slave连接都创建一个线程,每个slave只有I/O和SQL线程。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walkingmanc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值