Posts Tagged ‘mysql’

搭建mysql master-slave replication

转载:http://www.sou5.cn/archives/606.html
本篇文章记录了如何搭建一个master-slave架 构的mysql数据库服务器,一般用于读写分离的场景下:master for INSERT/UPDATE/DELETE,slave for SELECT。
根据实战结果,在master-connect-retry=5的情况下,基本可以做到读写同步(可以打开slave的log文件来观察同步结果:tail -f /var/run/mysql/mysql.log)
基本信息
主库:192.168.1.1
从库:192.168.1.2
数据文件存放位置:/data/mysql
待同步数据库:除了mysql、test库以外的所有数据库
一、设置MASTER
1、修改my.cnf
#vi /etc/my.cnf
server-id=1
log-bin
binlog-ignore-db=mysql
binlog-ignore-db=test
2、赋予SLAVE权限帐号,允许用户在 MASTER上LOAD TABLE和LOAD DATA
mysql> GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO slave@192.168.1.2 IDENTIFIED BY ‘password’;
3、锁主库表
mysql> FLUSH TABLES WITH READ LOCK;
4、显示主库信息
记录File和Position,从库设置将会用到
mysql> SHOW MASTER STATUS;
+—————+———-+————–+——————+
| File          | Position | Binlog_do_db | Binlog_ignore_db |
+—————+———-+————–+——————+
| hathor-bin.001 | 79   |              | mysql,test         |
+—————+———-+————–+——————+
5、打包主库
# [...]

mysql MERGE Storage Engine

mysql Merge 引擎只能用于myISAM表的合并。它能把几个相同结构的表合并成一个表来查询。而数据和索引都还在原表中储存。
假设需要记录视频每天的播放数量,但由于记录数太大,只能一天一张表来记录,如果需要查询一个月播放次数最多的10个视频。这个时候就可以创建一个merge表把一个中的30表联合成一张表,然后一条语句就能查询出来。
例子:
在mysql执行以下sql:
CREATE TABLE EXISTS `t1` (
`id` int(11) default NULL,
`value` int(11) default NULL
) ENGINE=MyISAM;
INSERT INTO `t1` (`id`, `value`) VALUES
(1, 2),
(2, 3);
CREATE TABLE `t2` (
`id` int(11) default NULL,
`value` int(11) default NULL
) ENGINE=MyISAM;
INSERT INTO `t2` (`id`, `value`) VALUES
(1, 3),
(2, 5);
CREATE TABLE IF NOT EXISTS `t` (
`id` [...]