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

Mysql主从复制配置

2010-08-16 16:22 776 查看
[align=center]Mysql主从复制配置[/align]
本文只是介绍安装和配置,关于一些名词和原理,请参考mysql手册。
Mysql的复制最少需要两台mysql服务器,一台主(主机名master,ip为192.168.20.204),一台从(主机名slave:ip 为192.168.20.205)。
为了快速搭建mysql环境,我选择了rpm的安装方式,在实际应用中根据自己的需求选择安装方式。下载mysql的RPM安装文件并安装mysql,两台mysql的安装时一样的(我下载的是常规的Linux RPM包,因为我的系统是centos,之前选择RedHat的RPM包安装失败了)
MySQL-server-5.1.46-1.glibc23.i386.rpm //服务器程序
MySQL-client-5.1.46-1.glibc23.i386.rpm //客户端程序
一.Mysql的安装
[root@master ~]# rpm -ivh MySQL-server-5.1.46-1.glibc23.i386.rpm
[root@master ~]# rpm -ivh MySQL-client-5.1.46-1.glibc23.i386.rpm
安装完成后,拷贝mysql配置文件到/etc/目录下
[root@master mysql]# cp /usr/share/my-medium.cnf /etc/my.cnf
初始化mysql的root密码
mysqladmin -u root password 123456
二.配置复制
1,首先登录master数据库,创建复制账号
mysql> grant replication slave on *.* to repl@192.168.20.205 identified by '123456';
2,设置只读锁定,查看二进制日志名和记录偏移量
mysql> flush tables with read lock;

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
3,备份(导出)master数据库,解除只读锁定
[root@master ~]# mysqldump --all-databases > all.sql

[root@master ~]# mysql -uroot -p123456
mysql> unlock tables;
4,在slave服务器上,将master导出的sql文件导入
[root@slave ~]# mysql -uroot -p123456 < all.sql
登录slave数据库,查看库和表,看是否和master一致
5,确保导入成功后,修改salve数据库的配置文件
[root@slave ~]# vi /etc/my.cnf
将server-id = 1修改成server-id = 2
保存退出,并暂时停止slave数据库
[root@slave ~]# service mysql stop
6,在slave上,使用--skip-save-start选项启动数据库,这样做的好处是不会立即启动从数据库上的复制进程,方便我们进一步配置从服务器
[root@slave ~]# mysqld_safe --skip-save-start &
7,设置从数据库
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.20.204',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='123456',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=106;
8,启动slave进程,查看进程列表
mysql> start slave;

mysql> show processlist \G
*************************** 1. row ***************************
Id: 2
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 3
User: system user
Host:
db: NULL
Command: Connect
Time: 30
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 4
User: system user
Host:
db: NULL
Command: Connect
Time: 30
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
3 rows in set (0.00 sec)
蓝颜色标记的字段,表明已经连上了master数据库。

9,接下来就是测试复制了
首先在master数据库中创建一个名为yanggt的库,在库中新建一个表,插入几条记录,看是否能在slave数据库中看到,如果看到的结果和master一致,说明已经ok了!本文出自 “杨岗涛技术博客” 博客,请务必保留此出处http://yanggangtao.blog.51cto.com/1566690/376402
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: