MySQL-从服务器的配置

本文介绍了mysql数据库的主-从服务器的详细配置,实现主-从服务器之间数据的复制。

背景:1、主服务器:安装mysql-5.5.20-i386(且数据库中有很多数据),操作系统:RHEL5,平台:x862、从服务器:安装mysql-5.5.20-x86_64,操作系统:RHEL5,平台:x86_64

一、在从服务器上安装mysql-5.5.20-x86_64

下载mysql-5.5.20-x86_64源码包,此处以那种解压缩后初始化一下数据库的软件包为例。

1) 添加运行mysql的用户和组

#group -r mysql

    #useradd -r -g mysql -s /sbin/nologin -M mysql

2) 创建mysql的数据文件存放目录(此处存放目录为/mydata/data)

mkdir -pv /mydata/data

3) 解压软件包,并做初始化配置

#tar xf  mysql-5.5.20-linux2.6-x86_64.tar.gz -C /usr/local/

#cd /usr/local

#ln -sv /usr/localmysql-5.5.20-linux2.6-x86_64 /usr/local/mysql

#cd /usr/local/mysql

#./scripts/mysql_install_db --user=mysql --datadir=/mydata/data

4) 添加sysv服务控制脚本

#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

5) 提供mysql的配置文件

#cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf

6) 修改PATH环境变量

在 /etc/profile 中添加如下一行:

PATH=$PATH:/usr/local/mysql/bin

7) 导出mysql的头文件

#ln -sv /usr/local/mysql/include /usr/include/mysql

8) 导出mysql的库文件

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

# ldconfig

9) 输出mysqlman手册至man命令的查找路径

编辑/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

二、同步主从服务器上的数据

由于主服务器数据库中数据库 已经有很多数据了,所以应该先用mysqldump对主服务器的所有数据做一次逻辑备份,并记录此刻所使用二进制日志文件和事件位置,然后将逻辑备份内容导入到从服务器的数据库中。

备份主服务器上的所有数据库

#mysqldump -uroot -ppassword --all-databases --local-all-tables --master-data=2  --flush-logs > /tmp/all-master.sql

在从服务器上d导入主服务器上的所有数据库

1、将主服务器上的备份文件/tmp/all-master.sql 复制到从服务器上的/tmp目录中;

2、执行如下命令:

mysql> set sql_log_bin=0;

mysql> source /path/to/backup.sql;

mysql> set sql_log_bin=1;

三、配置从服务器

修改mysql配置文件/etc/my.cnf

[mysqld]段中,修改如下内容:

thread_concurrency = 2  #此数字为机器cpu个数的2

datadir = /mydata/data   #mysql存放的数据目录

#log-bin=mysql-bin    #一般情况下从服务器不需要开启记录二进制日志功能的,所以注释掉此项

relay_log=relaylog    #开启中继日志

relay_log=relaylog.index

server-id = 12   # 此参数非常重要,必须保证从服务器的server-id不能和主服务器的一样。

read_only=1   #阻止用户向从服务器写如数据,但该选项不能阻止具有super权限的用户写入;

在主服务器中建立用于复制的用户

mysql > grant replication client, replication slave on *.* to 'repl'@'SLAVE_IP' identified by 'Your_password';

连接进入从服务器,输入以下命令:

mysql > change master to master_user='repl', master_password='Your_password', master_log_file='mysql-bin.000001' master_log_pos=178

mysql >Start slave;

mysql >Show slave status\G    --查看从服务器是否工作正常;

注:master_log_file是指定从那个二进制日志文件开始复制,master_log_pos是指定从那个事件开始进行复制。这两个选项的指定应依照第二步中使用的备份文件/tmp/all-master.sql中的CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=178来定义;

这样,mysql主、从服务器的配置已经完成了。