配置主从服务器
为什么使用主从复制?
1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器进行恢复。
2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。
3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。
配置条件:有至少两台主机,一主,一从;一个主服务器可以有多个从服务器,但是一个从服务器不可以有多个主服务器。保证主服务器和从服务器的mysql版本至少一样,从服务器的mysql版本必须等于或高于主服务器的mysql版本。
这里演示是在纯净的、原来没有mysql运行的主机。假设主服务器是172.16.27.1,从服务器ip:172.16.27.2
一、安装mysql,主从服务器安装mysql的步骤相同
1、下载好mysql包,主从用同一个版本的mysql
2、创建用户
  # mkdir /mydata/data
  # groupadd -r mysql
  # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
  # chown -R mysql:mysql /mydata/data
3、安装并初始化mysql-5.5.20
# tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.19-linux2.6-i686  mysql
# cd mysql
# chown -R mysql:mysql  .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
--user指定用户是mysql --datadir指定数据存放目录为/mydata/data
# chown -R root  . 将当前文件的属主改为root
# chown -R mysql data 因为data是数据的默认存放目录,为了安全将属主改为mysql
4、为mysql提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf  /etc/my.cnf
# vim /etc/my.cnf 打开配置文件将thread_concurrency的值
改为CPU个数乘以2的值
如我的主机就一个cpu,所以我这里改为thread_concurrency==2
另外还需要添加如下行指定mysql数据文件的存放位置:
datadir = /mydata/data
5、为mysql提供sysv服务脚本:
# cd /usr/local/mysql
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
6、添加至服务列表:
# chkconfig --add mysqld
# chkconfig mysqld on
# service mysqld start
二、mysql安装好后
1、主从服务器上都有的操作:
# vim /etc/my.cnf
找到#innodb_lock_wait_timeout = 50这行,在其下面添加一行如下:
innodb_file_per_table=1
主从服务器二者的server-id不能相同
主服务器的server-id = 1不改,将从服务器上的server-id改为任意数,注意不要和主服务器
的server-id离得太近,这里从服务器上的server-id=11
主服务器还要打开二进制文件即binlog-bin=mysql-bin
从服务器要注视掉这一行,即不要启用二进制日志,要启用中继日志
2、编辑从服务器的配置文件
# vim  /etc/my.cnf
找到 binlog-bin=mysql-bin将其注释掉,并在其下添加如下两行打开中继日志
relay-log=relay-bin
relay-log-index=relay-bin.index
3、重启服务器
# server mysqld  restart
4、在主服务器上创建用户,使其具有复制的功能
# mysql
mysql>GRANT REPLICATION CLIENT,REPLICATIONSLAVE ON *.* repl@‘172.16.%.%' IDENTIFIED BY'123456';
mysql>FLUSH  PRIVILEGS;让其生效
mysql>SHOW GRANTS FOR repl@'172.16.%.%'; 为了确保没有问题用此命令验证一下
若没有问题了
5、连接到从服务器
#mysql
mysql>CHANGE MASTER TO MASTER_HOST='172.16.27.1',MASTER_USER='repl',MASTER_PASSWORD='123456';
mysql>SHOW SLAVE STATUS\G;会出现如图所示,此时两项都是no的状态

mysql>START SLAVE;明确说明要启用从服务器进程
mysql>SHOW SLAVE STATU\G; 此时两项都必须为yes,有一项不是yes都是错的,如图所示

6、此时就可以测试了,怎样测试呢?
在主服务器上创建一个数据库
# mysql
mysql> CREATE DATABASE magedu;
mysql> use magedu;
mysql> CREATE TABLE tb1 ID INT,Name VARCHAR(100);
7、在从服务器上查看是否有这样一个数据库和表
# mysql
mysql> SHOW DATABASES;
mysql> use maged;
mysql> SHOW  TABLES;
此时你会发现和主服务器上的一样,这就实现主从复制。到此主从服务器的配置就结束了。
8、如果在上面第5步启动从服务器后,下面这两项是这种情况:
Slave_IO_Running: Yes
Slave_SQL_Running:No
先把从服务器停掉  mysql>STOP SLAVE;
这时再在主服务器上清空日志
# mysql
mysql> FLUSH MASTER;
mysql>SHOW MASTER STATUS; 显示如图所示
mysql> \q
从服务器:
# mysql
mysql> FLUSH SLAVE;
mysql> SHOW MASTER STATUS;此时显示为空,什么也没有
mysql> SHOW SLAVE  STATUS\G; 此时Relay_log_file 从relay-bin.000001开始