日期:2014-05-16 浏览次数:20935 次
【测试环境如下】
master端(ip为192.168.0.5):virtualbox下的ubuntu 10.0.4,mysql为5.5版本。
slave端(ip为192.168.0.3):xp系统,mysql为5.5版本。
?
【过程】
1.保证master端的防火墙对slave端ip开放3306端口(这一步可以最后做的):
#iptables -A INPUT -p tcp --dport 3306 -s 192.168.0.3 -j ACCEPT
在xp下,用mysql -u[用户名] -p[密码] -h[ip地址] ,可以试一下能不能连接。
?
2.修改master的$MYSQL_HOME$/etc/my.cnf 文件,添加内容:
server-id=1 log-bin=mysql-bin?
3.进入mysql,给slave授予权限
mysql > GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.3' IDENTIFIED BY '123456';
这样,slave端即可用slave001,123456来配置访问master端。
?
4.master端设置读锁,读取日志文件名和偏移量;备份要同步的数据库(此处备份test);然后解锁
mysql > flush tables with read lock;
mysql > show master status;? ? ? ?? //得到File为mysql-bin.000003, Position为1778
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 1778 | | | +------------------+----------+--------------+------------------+?
然后用mysqldump工具导出数据文件,
mysqldump -uroot -p test > test.sql
mysql > unlock tables;
?
5.修改slave的my.ini文件
server-id=2
?
6.进入slave端的mysql
导入刚才master端备份的test.sql
mysql > source d:\test.sql????? // 这里假定刚才master端导出的test.sql已经放置到了slave端的d:\test.sql
?
7.对slave端相应设置,进入slave端的mysql,
mysql >? change master to master_host='192.168.0.5';
mysql >? change master to master_user='slave001';
mysql >? change master to master_password='123456';
mysql >? change master to master_port=3306;
mysql >? change master to master_log_file='mysql-bin.000003';
mysql >? change master to master_log_pos=1778;
?
8.看一下slave端的状态是否正常。
mysql >? show slave status/G;
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.5 Master_User: slave001 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003?
9.测试
?进入master命令行,执行一条建表语句
?【mysql>】use test;
?【mysql>】create table cxl(`id` int(11) primary key);
?进入slave查看test库中是否有cxl表
?【mysql>】use test;
?【mysql>】show tables;
?若列表中有cxl表,说明配置主从数据库成功。
?
ps:
上面的从机是windows xp环境,slave端配置貌似只能通过类似“change master to .......”的方式进行配置。
如果从机也是linux环境,slave端配置,可以修改my.cnf的内容进行配置(未进行试验),内容例如:
server-id?????????????? = 2
master-host???? =192.168.0.5
master-user???? =slave0001
master-pass???? =123456
master-port???? =3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库