以rpm方式安装mysql-5.6.25并配置主从同步


 CentOS6.5以rpm方式安装mysql-5.6.25并配置主从同步

系统环境:Centos6.5 2.6.32-431.el6.x86_64

主库:mysql master:[IP:192.168.137.13] 

从库:mysql slave: [IP:192.168.137.14]

 

 

 
以下在两台Mysql主机上同样方法操作:
 
1.检查下linux是不是已经安装了mysql
 
  1. rpm -qa | grep mysql 
#如果安装了先卸载旧的版本    
yum -y remove mysql...
默认情况下Centos6.5自带一个Mysql库:
 
  1. [root@mysql-02 ~]# rpm -qa|grep mysql 
  2. mysql-libs-5.1.71-1.el6.x86_64 
因为版本不同,所以要卸载
 
2.下载需要的安装包,下载地址:
http://mirrors.sohu.com/mysql/MySQL-5.6/
开始逐个安装
 
我这里用已经下载过的MySQL-5.6.25-1.el6.x86_64.rpm-bundle.tar包
这个包解压出来就有以下几个安装文件:
 
  1. MySQL-client-5.6.25-1.el6.x86_64.rpm 
  2. MySQL-devel-5.6.25-1.el6.x86_64.rpm 
  3. MySQL-embedded-5.6.25-1.el6.x86_64.rpm 
  4. MySQL-server-5.6.25-1.el6.x86_64.rpm 
  5. MySQL-shared-5.6.25-1.el6.x86_64.rpm 
  6. MySQL-shared-compat-5.6.25-1.el6.x86_64.rpm 
  7. MySQL-test-5.6.25-1.el6.x86_64.rpm 
 
4.初始化MySQL及设置密码
 
 
  1. [root@localhost ]# /usr/bin/mysql_install_db 
  2.  
  3. [root@localhost ]# service mysql start 
  4.  
  5. [root@localhost ]# cat /root/.mysql_secret  #查看root账号密码 
  6.  
  7. # The random password set for the root user at Mon Oct 26 19:41:00 2015 (local time): TNQW_VdjUo4cUbyL 
  8.  
  9. [root@localhost ~]# mysql -uroot –pTNQW_VdjUo4cUbyL 
  10.  
  11. mysql> set passwordpassword =password('123456');            #设置密码为123456 
  12. Query OK, 0 rows affected (0.05 sec)  
  13.  
  14. mysql> exit 
 
设置开机自启动
 
  1. chkconfig mysql on 
  2. chkconfig --list | grep mysql 
  3.  
  4. MySQL的默认安装位置说明 
  5. /var/lib/mysql/   #数据库目录 
  6. /usr/share/mysql  #配置文件目录 
  7. /usr/bin          #相关命令目录 
  8. /etc/init.d/mysql   #启动脚本         
                                                                             
Mysql的安装就完成了,两台主机按照上面的操作安装,接下来配置主从同步:
 
 
/etc/my.cnf配置参考:从主配置文件这里只有黄色部分修改,主ID比从ID大就好了,一般主为1、从为2;
 
  1. [root@mysql-02 swper]# cat /etc/my.cnf 
  2. [client] 
  3. password = 123456 
  4. port = 3306 
  5. default-character-set=utf8 
  6.      
  7. [mysqld] 
  8. port=3306 
  9. character_set_server=utf8 
  10. character_set_client=utf8 
  11. collation-server=utf8_general_ci 
  12. socket = /var/lib/mysql/mysql.sock 
  13. datadir = /var/lib/mysql 
  14. server-id=1 
  15. log-bin= /var/lib/mysql/mysql-bin     
  16. log-bin-index= /var/lib/mysql/mysql-bin.index 
  17. max_connections = 1000 
  18. max_connect_errors = 10000 
  19.  
  20. open_files_limit    = 1024 
  21. default-storage-engine = InnoDB 
  22. tmp_table_size = 2M 
  23.  
  24. relay-log = /var/lib/mysql/relay-bin 
  25. relay-log-info-file = /var/lib/mysql/relay-log.info 
  26. binlog_cache_size = 1M 
  27. max_binlog_cache_size = 1M 
  28. max_binlog_size = 2M 
  29. expire_logs_days = 7 
  30. skip-name-resolve 
  31. slave-skip-errors = 1032,1062 
  32. replicate-ignore-db=mysql 
  33.  
  34. #LOGGING 
  35. log_error=/var/log/mysql-error.log 
  36. slow_query_log_file=/var/log/mysql-slow.log 
  37. slow_query_log=1 
  38.                     
  39. [mysql] 
  40. default-character-set = utf8 
 
创建主从同步的帐户:允许从192.168.137.0/24网段登陆;
创建同步帐户:rep,密码:rep12345
 
  1. mysql> grant replication slave on *.* to rep@'192.168.137.%' identified by '12345'; 
  2.  
  3. mysql> grant replication slave on *.* to rep@'192.168.137.%' identified by '123456'; 
  4. Query OK, 0 rows affected (0.07 sec) 
  5.  
  6. mysql> select host,user,password from mysql.user; 
  7. +---------------+------+-------------------------------------------+ 
  8. | host          | user | password                                  | 
  9. +---------------+------+-------------------------------------------+ 
  10. | localhost     | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 
  11. | mysql-01      | root | *1685971AF0BD4E0D0CBF9DEC23F51B54A0C9BD32 | 
  12. | 127.0.0.1     | root | *1685971AF0BD4E0D0CBF9DEC23F51B54A0C9BD32 | 
  13. | ::1           | root | *1685971AF0BD4E0D0CBF9DEC23F51B54A0C9BD32 | 
  14. | 192.168.137.% | rep  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 
  15. +---------------+------+-------------------------------------------+ 
  16. 5 rows in set (0.00 sec) 
接着导出初始数据,目的为了让主从服务器Mysql里的数据一致:
 
  1. [swper@mysql-01 ~]$ mysqldump -uroot -p'123456' -l -A > all_database.sql 
参数说明:-l:小写L,导出数据时锁表,只读;
-A:表示所有数据库,当然可以根据自己情况。如果有-B表示所有表;
然后把这个备份文件传到从服务器上,导入到Mysql里面;
 
 
下面在从服务器操作:
导入主服务器备份数据:
 
  1. [root@mysql-02 swper]# mysql -uroot -p123456 <all_database.sql          
  2. 停止slave实例: 
  3. [root@mysql-02 swper]# mysql -uroot -p123456 -e "stop slave"        
  4. [root@mysql-02 swper]# cat |mysql -uroot -p123456 <<EOF             
  5. change master to 
  6. master_host='192.168.137.13'
  7. master_port=3306
  8. master_user='rep'
  9. master_password='123456'
  10. master_log_file='mysql-bin.000011'
  11. master_log_pos=329
  12. EOF 
 
接着再启动slave:
 
  1. [root@mysql-02 swper]# mysql -uroot -p123456 -e "start slave"       
  2. [root@mysql-02 swper]# mysql -uroot -p123456 -e "show slave status \G"|grep "Slave" 
  3. Warning: Using a password on the command line interface can be insecure. 
  4.             Slave_IO_State: Waiting for master to send event 
  5.             Slave_IO_Running: Yes 
  6.             Slave_SQL_Running: Yes 
  7.       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it 
 
 
两个YES表示主从同步成功:
接下来在主服务器创建数据库、表;就可以在从库上看到更新了;