Mysql可以通过Master-Slave来实现数据的拷贝,这也是数据库读写分离的主要实现方式。
这几天试了一下Master-Slave的方式,把主要的要点总结一下,如果要看详细的,参考mysql的帮助。
我的测试服务器是两台ubuntu的机器,MASTER IP:192.168.1.100 SLAVE IP:192.168.1.101
1.要安装兼容版本的mysql,我这里在ubunut下,直接apt-get了一个mysql,安装的版本为
shell$ mysql -V
mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1
端口默认3306
2.在主库上新建一个库 create database testdb;
新建一张表 create table t_test1(id int,name varchar(32));
插入几条数据
3.mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101' IDENTIFIED BY '123456';
4.更改主库的my.cnf
shell$vi /etc/mysql/my.cnf
主要修改为:
server-id = 1 #master id 主库的id,不起用默认为1,设置m-s每一个id必须唯一
log_bin = /var/log/mysql/mysql-bin.log #启用二进制日志
binlog_do_db = testdb #用于master-slave的具体数据库
#binlog_ignore_db = include_database_name
保存退出重新启动mysql
5.查看主库状态
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 207 | testdb | |
+------------------+----------+--------------+------------------+
OK,主库的基本设置完成,设置从库
首先备份主库
shell$ mysqldump -uroot -p testdb>testdb.sql
传到101上去
shell$ scp -P 22218 testdb.sql user@192.168.1.101:~
登入101,创建 create database testdb;
还原
shell$ mysql -uroot -p testdb show master status;
在101上,编辑my.cnf文件
sudo vi /etc/mysql/my.cnf
server-id = 2 # mysql的一个id,每一个mysql有一个唯一的id不能重复
编辑完了之后,重启mysql。
进入mysql,关闭mysql slave : slave stop;
改变主库的连接
mysql>CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=207;
启动slave : slave start;
主库运行:
mysql>SHOW PROCESSLIST\G;
如果看到
Command: Binlog Dump
启动完成
从库也运行
mysql>SHOW PROCESSLIST\G;
看到
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 10
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 11
User: system user
Host:
db: NULL
Command: Connect
Time: 11
State: Has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
说明启动,接下来,我们在主库插入数据,再在从库查询是否有数据,有,就安装成功。
总结,mysql master-slave安装不是很难,主要有注意几点
1.数据库版本要兼容
2.数据库实现拷贝之前要同步
分享到:
2010-09-07 22:27
浏览 1341
分类:数据库
评论