两台服务器 192.168.187.131 192.168.187.132
1.主从配置 131为主 132为从
在131下
vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ###################### #server-id server-id = 131 服务器id #binary log log-bin = mysql-bin #statement row mixed 日志格式 binlog-format = mixed
binlog-dp-db=test #指定数据库
binlog-ignore-db=mysql #防止同步mysql
######################
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid service mysqld restart
在132下
vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 ################# server-id=132 #relay log relay-log=mysql-relay
master-port=3306
master-connect-retry=60
replicate-ignore-db=mysql
replicate-do-db=test #################### [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid service mysqld restart
开放131mysql权限
grant replication client,replication slave on *.* to 'repl'@'%' identified by 'repl'; show master status; //查看主服务器信息
132下
change master to master_host = '192.168.187.131', master_log_file = 'mysql-bin.000006', //根据主服务器来改 master_log_pos=263, master_user='repl', master_password='repl';
slave start;
show slave status; //若显示waiting表示成功
接下来在131下进行sql操作,132就会有相应显示
2.主主复制 即两台都为主服务器
实现也很简单,就是各自视对方为主服务器,自己为从服务器即可
在131(原来主服务器)配置加上
relay-log=mysql-relay
在132(原来从服务器)配置加上
log-bin=mysql-bin
binlog-format=mixed
然后像上面描述一样将两边主从同步即可
然后测试 =_=
关于主主复制的主键冲突的解决方法:
在两边的mysql中输入
set session auto_increment_increment=2; set session auto_increment_offset=1; set global auto_increment_increment=2; set global auto_increment_offset=1; set session auto_increment_increment=2; set session auto_increment_offset=2; set global auto_increment_increment=2; set global auto_increment_offset=2;
此方法只适合两个服务器=_=
3.被动主主复制(一读一写)
在只读服务器的mysql配置上加上
read-only=1 show variables like '%read%';//查看是否为只读
4.mysql-proxy实现负载均衡和读写分离
下载mysql-proxy并使用
wget http://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz cd mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit ./bin/mysql-proxy -P 4040 --proxy-backend-addresses=192.168.187.131:3306 --proxy-backend-addresses=192.168.187.132:3306 负载均衡 ./bin/mysql-proxy -b 192.168.187.131:3306 -r 192.168.187.132 -s /usr/local/src/mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua 读写分离
可在windows下连接虚拟机进行测试
5.partition分区
create table topic( -> tid int primary key auto_increment, -> title char(20) not null default '' -> )engine myisam charset utf8 -> partition by range(tid) ( -> partition t0 values less than(10), -> partition t1 values less than(20), -> partition t2 values less than(MAXVALUE) -> ); create table user( -> uid int, -> uname char(6), -> aid int -> )engine myisam charset utf8 -> -> partition by list(aid) ( -> partition bj values in (1), -> partition hb values in (2), -> partition xs values in (3), -> partition gx values in (4) -> );
建表以后可以测试并观察
ll /var/lib/mysql/test 变化