MySQL 双机热备配置步骤
主机环境
主机名 | 角色 | IP地址 | MySQL版本 | OS |
---|---|---|---|---|
MySQL1 | Master | 192.168.26.133 | 5.1.71 | CentOS 6.5 x86_64 |
MySQL2 | Slave | 192.168.26.134 | 5.1.71 | CentOS 6.5 x86_64 |
MySQL 在 3.23.15 以后的版本中提供数据库复制功能,利用该功能可以实现 MySQL 数据库备份、主从复制、双机互备功能。
在配置主从复制时,需要注意以下两点:
MySQL 的版本必须要高于 3.2。
Slave 的 MySQL 版本不能够比 Master 的 MySQL 版本低。
本文选用 MySQL 5.1.71 进行主从复制和双机互备的配置。
安装 CentOS
在本地安装 VMware,并安装 CentOS 6.5 x86_64 系统:
按照如下步骤,克隆一份 CentOS 6.5 x86_64,克隆后的名称为 CentOS_65_x64 Clone:
安装 MySQL
可以通过 yum 或者 rpm 两种方式安装 MySQL。
通过 yum 安装
查看有没有安装过 MySQL:
yum list installed mysql*
rpm -qa | grep mysql*
查看有没有安装包:
yum list mysql*
安装mysql客户端:
yum install mysql
安装mysql 服务器端:
yum install mysql-server
yum install mysql-devel
通过 rpm 安装
本使用 CentOS 镜像包所提供的 MySQL rpm 包进行安装。
rpm -ivh mysql-5.1.71-1.el6.x86_64.rpm openssl-devel-1.0.1e-15.el6.x86_64.rpm mysql-devel-5.1.71-1.el6.x86_64.rpm perl-DBI-1.609-4.el6.x86_64.rpm perl-DBD-MySQL-4.013-3.el6.x86_64.rpm mysql-server-5.1.71-1.el6.x86_64.rpm
启动 MySQL 服务
安装完成,启动 MySQL 服务:
service mysqld start
通过以下命令可以查看 MySQL Server 的运行状态:
service mysqld status
创建用户
理论上,可以在 Master 和 Slave 的 MySQL Server 中创建不同的用户用于同步,只要其中的初始数据一致即可,但在大多数实际生产环境中,为了降低运维成本,在 Master 和 Slave 上所创建的用于同步的用户名和数据库名都保持一致,本文在 Master 和 Slave 创建的用户同步的用户名为 repl,密码是 123456,用于同步的数据库名为 repldb,创建步骤如下:
通过如下命令修改 root 用户密码为 root:
mysqladmin -u root password 'root'
以 root 用户身份登录 MySQL Server:
mysql -uroot -proot
然后创建用于同步的用户 repl,密码是 123456:
create user 'repl' identified by '123456';
repl 用户建好以后,需要为之赋予一些权限,以便该用户可以执行登录、建表、insert等操作,在实际生产环节中,可以根据实际需要赋予特定的角色,本文使用如下语句为之赋予最大权限:
grant all privileges on *.* to 'repl'@'*' with grant option;
grant all privileges on *.* to 'repl'@'%' with grant option;
grant all privileges on *.* to 'repl'@'localhost' with grant option;
flush privileges;
创建数据库
以 repl 用户登录 MySQL Server:
mysql -urepl -p123456
如果登录的过程中出现如下错误:
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
使用 mysqladmin 更改 repl 密码即可:
mysqladmin -u repl password '123456'
使用如下命令创建用于同步的数据库 repldb:
create database repldb;
show databases;
配置Master
在 Master 主机的 MySQL 配置文件 my.cnf(/etc/my.cnf) 中添加如下配置选项:
server-id=1
log-bin=mysql-bin #同步事件的日志记录文件
binlog-do-db=repldb #提供数据同步服务的数据库
为了使 Slave 在同步时,能够以 repl 身份登录 Master 并访问 Master 的 repldb,需要在 Master 端以 root 用户登录 MySQL Server,然后执行以下 SQL 语句为 Slave 的 repl 用户赋予 REPLICATION 权限:
mysql -uroot -proot
grant replication slave,file on *.* to 'repl'@'192.168.26.132' identified by '123456';
flush privileges;
配置完成后,重启 MySQL Server:
service mysqld restart
service mysqld status
配置Slave
在 Slave 主机的 MySQL 配置文件 my.cnf(/etc/my.cnf) 中添加如下配置选项:
server-id=2
master-host=192.168.26.131 #Master 的 IP 地址
master-user=repl #同步的账号,当 Slave 登录 Master 时使用
master-password=123456 #Master 的 repl 用户的登录密码
master-port=3306 #Master 的端口号,Slave 同步 Master 数据时使用
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=repldb #Slave 需要同步的数据库名称,如果有多个数据库用","分割开
配置完成后,重启 MySQL Server:
service mysqld restart
service mysqld status
References
[1] MySQL Replication:http://dev.mysql.com/doc/refman/5.1/en/replication.html