两台虚拟机192.168.183.131和192.168.183.132,装完系统之后直接把所有开发包都装上
下载软件包mysql-5.6.10.tar.gz,cmake-2.8.10.2.tar.gz(从5.5开始mysql使用cmake来进行编译了而不是之前的configure)

mysql的编译安装

1.首先安装cmake

   
   
   
   
  1. [root@localhost ~]# tar -xvf cmake-2.8.10.2.tar.gz 
  2. [root@localhost ~]# cd cmake-2.8.10.2 
  3. [root@localhost cmake-2.8.10.2]# ./configure 
  4. [root@localhost cmake-2.8.10.2]# make;make install 

2.安装mysql
1)创建mysql用户和组

   
   
   
   
  1. [root@localhost ~]# groupadd mysql 
  2. [root@localhost ~]# useradd -g mysql mysql 
  3. [root@localhost ~]# mkdir /usr/local/mysql 
  4. [root@localhost ~]# chown -R mysql.mysql /usr/local/mysql 

2)解压缩mysql,进行编译安装

   
   
   
   
  1. [root@localhost ~]# tar -xvf mysql-5.6.10.tar.gz 
  2. [root@localhost ~]# cd mysql-5.6.10 
  3. [root@localhost ~]# cmake \ 
  4. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 
  5. -DMYSQL_DATADIR=/user/local/mysql/data \ 
  6. -DSYSCONFDIR=/etc \ 
  7. -DEXTRA_CHARSETS=all \ 
  8. -DDEFAULT_CHARSET=utf8 \ 
  9. -DDEFAULT_COLLATION=utf8_general_ci \ 
  10. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
  11. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 
  12. -DWITH_BLACKHOLE_STORAGE_ENGINE=1  \ 
  13. -DWITH_FEDERATED_STORAGE_ENGINE=1 \ 
  14. -DWITH_PARTITION_STORAGE_ENGINE=1 \ 
  15. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ 
  16. -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock  \ 
  17. -DMYSQL_TCP_PORT=3306 \ 
  18. -DWITH_DEBUG=0 \ 
  19. -DENABLED_LOCAL_INFILE=1
  20. [root@localhost ~]# make;make install 
  21. [root@localhost ~]# cd /usr/local/mysql/ 
  22. [root@localhost mysql]# chown -R root.mysql * 
  23. [root@localhost mysql]# chown -R mysql.mysql data/ 

3)创建主配置文件和启动脚本

   
   
   
   
  1. [root@localhost data]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf 
  2. [root@localhost ~]# vi /etc/my.cnf 
  3. basedir = /usr/local/mysql 
  4. datadir = /usr/local/mysql/data 
  5. port = 3306 
  6. server_id = 131 
  7. socket = /var/run/mysqld/mysqld.sock 
  8. user = mysql 
  9. log-error = /var/log/mysqld.log 
  10. [root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 
  11. [root@localhost data]# vi /etc/init.d/mysqld 
  12. basedir=/usr/local/mysql 
  13. datadir=/usr/local/mysql/data 
  14. mysqld_pid_file_path=/var/run/mysqld/mysqld.pid 

4)把mysql的相关文件录入系统
配置mysql命令的搜索路径
打开/etc/profile文件找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC在这句之前添加export PATH=$PATH:/usr/local/mysql/bin 就会对所有用户有效并且开机自动生效了

告知系统mysql库文件的存放位置 
编辑/etc/ld.so.conf.d/mysql.conf 添加/usr/local/mysql/lib
ldconfig -v |grep mysql 
ldconfig会按照系统库文件的搜索路径把系统中所有的库文件重新加载一遍

告知系统mysql头文件的位置 
ln -sv /usr/local/mysql/include /usr/include/mysql

配置mysql的man手册页 
vi /etc/man.config添加 MANPATH=/usr/local/mysql/man

5)初始化数据库并且启动

   
   
   
   
  1. [root@localhost scripts]# pwd 
  2. /usr/local/mysql/scripts 
  3. [root@localhost scripts]# mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql 
  4. [root@localhost ~]# chkconfig --add mysqld 
  5. [root@localhost ~]# service mysqld start 

6)配置第二台mysql,直接复制过去

   
   
   
   
  1. [root@localhost ~]# scp -r /etc/my.cnf 192.168.183.132:/etc 
  2. [root@localhost ~]# scp -r /etc/init.d/mysqld 192.168.183.132:/etc/init.d 
  3. [root@localhost ~]# scp -r /usr/local/mysql 192.168.183.132:/usr/local 
  4. [root@localhost ~]# scp -r /etc/ld.so.conf.d/mysql.conf 192.168.183.132:/etc/ld.so.conf.d/ 
  5. [root@localhost ~]# groupadd mysql 
  6. [root@localhost ~]# useradd -g mysql mysql 
  7. [root@localhost ~]# chown -R mysql.mysql /usr/local/mysql 
  8. [root@localhost ~]# cd /usr/local/mysql 
  9. [root@localhost ~]# chown -R root.mysql * 
  10. [root@localhost ~]# chown -R mysql.mysql data/ 

在132上面把/etc/my.cnf配置文件中的server-id改成132,然后重复进行第四部

主从复制的配置

1.把131配置成主库,把132配置成从库
1)在131上面打开二进制日志

 

修改配置文件/etc/my.cnf,添加log-bin = mylog.000001

重启mysql

 

2)然后建一个用户,授权可以读取自己的二进制日志

   
   
   
   
  1. mysql> grant replication slave on *.* to slave@'192.168.183.132' identified by 'mapabc'
  2. Query OK, 0 rows affected (0.01 sec) 
  3. mysql> flush privileges; 
  4. Query OK, 0 rows affected (0.00 sec) 

3)从库上面登录测试

   
   
   
   
  1. [root@localhost ~]# mysql -u slave -p -h 192.168.183.131 
  2. Enter password:  
  3. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
  4.  
  5. mysql> show databases; 
  6. +--------------------+ 
  7. | Database           | 
  8. +--------------------+ 
  9. | information_schema | 
  10. | test               | 
  11. +--------------------+ 
  12. 2 rows in set (0.00 sec) 

4)主库上面查看当前的POS号

   
   
   
   
  1. mysql> show master status; 
  2. +--------------+----------+--------------+------------------+-------------------+ 
  3. | File         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
  4. +--------------+----------+--------------+------------------+-------------------+ 
  5. | mylog.000001 |      412 |              |                  |                   | 
  6. +--------------+----------+--------------+------------------+-------------------+ 
  7. 1 row in set (0.00 sec) 

5)在从库上面配置

   
   
   
   
  1. mysql> CHANGE MASTER TO 
  2.     -> MASTER_HOST='192.168.183.131'
  3.     -> MASTER_USER='slave'
  4.     -> MASTER_PASSWORD='mapabc',  
  5.     -> MASTER_LOG_FILE='mysql.000001',  
  6.     -> MASTER_LOG_POS=412
  7. Query OK, 0 rows affected, 2 warnings (0.08 sec) 

6)查看从库状态并启动从库

   
   
   
   
  1. mysql> show slave status\G; 
  2. *************************** 1. row *************************** 
  3.                Slave_IO_State:  
  4.                   Master_Host: 192.168.183.131 
  5.                   Master_User: slave 
  6.                   Master_Port: 3306 
  7.                 Connect_Retry: 60 
  8.               Master_Log_File: mysql.000001 
  9.           Read_Master_Log_Pos: 412 
  10.                Relay_Log_File: mysqld-relay-bin.000001 
  11.                 Relay_Log_Pos: 4 
  12.         Relay_Master_Log_File: mysql.000001 
  13.              Slave_IO_Running: No 
  14.             Slave_SQL_Running: No 
  15. mysql> start slave; 
  16. mysql> show slave status\G; 
  17. *************************** 1. row *************************** 
  18.                Slave_IO_State: Waiting for master to send event 
  19.                   Master_Host: 192.168.183.131 
  20.                   Master_User: slave 
  21.                   Master_Port: 3306 
  22.                 Connect_Retry: 60 
  23.               Master_Log_File: mylog.000001 
  24.           Read_Master_Log_Pos: 412 
  25.                Relay_Log_File: relay-bin.000002 
  26.                 Relay_Log_Pos: 279 
  27.         Relay_Master_Log_File: mylog.000001 
  28.              Slave_IO_Running: Yes 
  29.             Slave_SQL_Running: Yes 

7)测试
主库131创建数据库

   
   
   
   
  1. mysql> create database db5; 
  2. Query OK, 1 row affected (0.00 sec) 
  3.  
  4. mysql> show databases; 
  5. +--------------------+ 
  6. | Database           | 
  7. +--------------------+ 
  8. | information_schema | 
  9. | db5                | 
  10. | mysql              | 
  11. | performance_schema | 
  12. | test               | 
  13. +--------------------+ 
  14. 5 rows in set (0.00 sec) 

从库上面查看

   
   
   
   
  1. mysql> show databases; 
  2. +--------------------+ 
  3. | Database           | 
  4. +--------------------+ 
  5. | information_schema | 
  6. | db5                | 
  7. | mysql              | 
  8. | performance_schema | 
  9. | test               | 
  10. +--------------------+ 
  11. 5 rows in set (0.01 sec) 

已经同步过来了。

把132配置成主库,把131配置成132的从库
1)对于主从复制来说,主库可以接受读写,从库只能读不能写,一旦从库有写入操作,造成主从库数据不一致,复制立马就断开了,我们就在131上面建立一个授权帐号让它同步到132上面

   
   
   
   
  1. mysql> grant replication slave on *.* to slave@'192.168.183.131' identified by 'mapabc'
  2. Query OK, 0 rows affected (0.00 sec) 

2)打开132的二进制日志,把132配置成主库,然后重启132的mysql

3)在131上面配置

   
   
   
   
  1. mysql> CHANGE MASTER TO 
  2.     -> MASTER_HOST='192.168.183.132'
  3.     -> MASTER_USER='slave'
  4.     -> MASTER_PASSWORD='mapabc',  
  5.     -> MASTER_LOG_FILE='mylog.000001',  
  6.     -> MASTER_LOG_POS=120
  7. Query OK, 0 rows affected, 2 warnings (0.12 sec) 
  8. mysql> start slave; 
  9. Query OK, 0 rows affected (0.01 sec) 

4)测试
在132上面创建数据库

   
   
   
   
  1. mysql> create database db4; 
  2. Query OK, 1 row affected (0.01 sec) 

在131上面查看,看到已经同步过来了

   
   
   
   
  1. mysql> show databases; 
  2. +--------------------+ 
  3. | Database           | 
  4. +--------------------+ 
  5. | information_schema | 
  6. | db4                | 
  7. | db5                | 
  8. | mysql              | 
  9. | performance_schema | 
  10. | test               | 
  11. +--------------------+ 
  12. 6 rows in set (0.00 sec) 

至此,主主同步配置完成。