mysql 一直比较菜,今天尝试配置一个主从复制的集群。

 

环境:CentOS 6.3 x64  

 
主:192.168.1.41 mysql-master
从:192.168.1.42 mysql-slave
 
1、在主从服务器上都安装mysql-server
 
  1. # yum install mysql-server 
 
默认的配置文件太过简陋,我们使用/usr/share/mysql/my-large.cnf
 
  1. # cat /usr/share/mysql/my-large.cnf > /etc/my.cnf 
 
 
2、修改主服务器配置文件,确保下面这些值生效:
 
  1. server-id   = 1  
  2. log-bin=mysql-bin  
  3. sync_binlog = 1  
  4. relay-log=mysql-master-relay-bin 
  5. binlog-do-db=Syslog 
  6. binlog_ignore_db=mysql  
 
3、修改从服务器配置文件,确保下面这些值生效:
  1. server-id   = 2  
  2. log-bin=mysql-bin  
  3. sync_binlog = 1  
  4. relay-log=mysql-slave-relay-bin 
  5. binlog-do-db=Syslog 
  6. binlog_ignore_db=mysql  
  7. read-only = 1  

 

4、初始化mysql,设置密码等任务
 
  1. # service mysqld restart 
  2. # mysql_secure_installation  
  
5、在主服务器上创建一个用于复制的用户
 
  1. [root@mysql-master ~]# mysql -u root -p 
  2. mysql> GRANT REPLICATION SLAVE ON *.* TO 'joe'@'%' IDENTIFIED BY 'secret';
  3. mysql> FLUSH PRIVILEGES; 
  4.  
 
6、导出主数据库,并复制到从服务器上
 
  1. [root@mysql-master ~]# mysqldump -u root --all-databases >master.sql  
  2. [root@mysql-master ~]# scp master.sql root@192.168.1.42:/root/ 
 
7、导入数据库并配置同步,在从服务器上执行
 
  1. [root@mysql-slave ~]#mysql -u root -p  
  2. mysql>STOP SLAVE;  
  3. mysql>quit  
  4.   
  5. [root@mysql-slave ~]#mysql -u root -p < master.sql  
  6. [root@mysql-slave ~]#mysql -u root -p  
  7.   
  8. mysql>START SLAVE;  
  9.   
  10. mysql> CHANGE MASTER TO   
  11.      MASTER_HOST='192.168.1.41',   
  12.      MASTER_USER='joe',   
  13.      MASTER_PASSWORD='secret',   
  14.      MASTER_PORT=3306,   
  15.      MASTER_CONNECT_RETRY = 10 
  16. mysql>START SLAVE;  
8、在从服务器上查看slave 状态
  
  1. mysql> SHOW SLAVE STATUS; 
  2.  
  3. mysql> SHOW PROCESSLIST;  
  4.  
输出太大,省略掉不贴出来,重要的是有句“Waiting for master to send event
 
 
9、在主服务器上查看master状态
 
  1. mysql> show master status; 
  2.  
  3. mysql> SHOW PROCESSLIST;   
同上,有句“Has sent all binlog to slave; waiting for binlog to be updated
 
 
10、其他验证 
 
尝试在主服务器上新建个数据库,插入点数据,然后到从服务器上看看是否同步。
  1. # yum install rsyslog-mysql 
  2. # cd /usr/share/doc/rsyslog-mysql-5.8.10/ 
  3. # mysql -u root -p <createDB.sql 
 这样会在主服务器中生成一个名为Syslog 的数据库
 

注:最后一步尚未亲自验证。