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

Mysql-Master与Slave配置

2011-12-06 21:32 405 查看
今天在ubuntu下进行了mysql的Master和Slave的简单配置,基本上属于hello world的难度,但是看起来很简单,但真正做一遍,可不是那么的容易了。

环境:在两台电脑上,开启mysql服务。

原理:在slave端会有两个线程负责同步工作,一个IO线程,负责将master中的bin log读取过来转换为relay log;另一个是sql线程,根据relay log执行sql语句。

首先说一下大体的步骤,其实就是两部分,一部分是master端的配置,另一部分就是slave端的配置。

一、master端的配置

在master端,主要有两个事情需要做,一个是授权,另一个是修改配置文件。

授权:grant replication slave on *.* to ‘slave’@34.34.34.34 identified by '123';

配置文件:bind-address = 0.0.0.0 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log

bind-address改为0.0.0.0为了允许远程访问;server-id唯一表示该master;log-bin记录对数据库的日志,slave通过该文件同步。

二、slave端的配置

slave端的配置主要是让slave知道同步master的地址以及日志文件,可以通过两种方式实现,一种是直接在配置文件中设定参数,另一种是在mysql命令行中设定master。

配置文件方式:在mysqld中添加下面的参数

server-id = 2

master-host = 45.45.45.45

master-user = slave

master-password = 123

master-port = 3306

log_bin = /var/log/mysql/mysql-bin.log //本地的binlog文件

relay_log    = /var/log/mysql/mysql-relay.log //转化成的relay_log文件

master_log_file  = mysql-bin.000022      //master中的bin log文件

master_log_pos  = 106          //从那个位置开始恢复

命令行方式:

change master to master_host='45.45.45.45', master_user='slave', master_password='123', master_port=3306, master_log_file='mysql-bin.000022', master_log_pos=106;

这两种方式可以混合用,但server-id必须在配置文件中说明。

配置完成之后,通过slave stop/start开启slave线程。

通过 show slave status;查看线程的状态。

第一次试验时出现io线程失败, 原因可能有三个:1、网络出现问题,2、my.cnf配置有问题,3、权限不对,如何看是那一种原因呐,可以查看error log,通过error log的提示查找错误。

数据复制是mysql的核心功能,看起来配置很简单,但是想真正实现安全、完成的复制还是需要很多工作的,以上只是一个简单的配置,如果需要更好的应用还需要深入的学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: