MYSQL 主从复制读写分离实现

 MYSQL 主从复制读写分离实现

    mysql从3.23.15版本以后提供数据库复制功能,而以前,数据库双机热备还仅是大型数据库的专利,利用该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。 
概述:
根据项目要求,我们编写一个基于CentOS平台的MYSQL主从部署手册。
为了缩减本文档体积和方便大家部署使用,将不提供操作截图,只提供需要输入的命令,方便大家复制粘贴命令行。
 
Mysql安装准备:
测试机IP准备::
• 主服务器Master: 192.168.1.136
• 从服务器Slave : 192.168.1.137
测试机yum准备:
Yum地址:http://centos.ustc.edu.cn/centos/(根据网络状况选择适合源地址)
Yum部署:
#cd /etc/yum.repos.d
#mv CentOS-Base.repo  CentOS-Base.repo.save
#wget http://centos.ustc.edu.cn/CentOS-Base.repo
#vi /etc/yum.repos.d/CentOS-Base.repo
把[centosplus] 中的 enabled=0 改为enabled=1
安装包准备:
• Mysql:http://221.1.222.15:82/down/mysql-5.1.55.tar.gz
 
Mysql主从安装:
安装mysql,推荐主从两台服务器安装相同版本Mysql
#useradd mysql -s /sbin/nologin
#cd /usr/src
#wget http://221.1.222.15:82/down/mysql-5.1.55.tar.gz
#tar zxvf mysql-5.1.55.tar.gz
#cd mysql-5.1.55
#./configure --prefix=/usr/local/mysql  --localstatedir=/opt/data --with-extra-charsets=utf8,gb2312,gbk --with-pthread --enable-thread-safe-client
注:配置过程制定数据库文件的位置及额外字符集,可以根据情况选择
#make
#make install
#cp support-files/my-large.cng /etc/my.cnf
#cd /usr/local/mysql
#chgrp –R mysql .
生成基本的库、表
#/usr/local/mysql/bin/mysql_install_db --user=mysql
确认生成的库、表,并授权
# cd /opt/data
# pwd
/opt/data
# ll       //务必生成相应的库、表
#chown –R mysql:mysql /opt/data
设置root密码:
#/usr/local/mysql/bin/mysqladmin –uroot password “q1w2e3r4”
以上操作过程主、从服务器均相同。
 
Mysql主从配置:
修改配置文件:
主服务器Master:
#vi /etc/my.cnf
[mysqld]  
log-bin=mysql-bin  
server-id=1     //默认是1,保持不变
  从服务器Slave
    #vi /etc/my.cnf
[mysqld]  
log-bin=mysql-bin  
server-id=2    //默认是1,修改为大于等于2的数字,但不要太离谱的9999….
启动mysql服务:
#/usr/local/mysql/bin/mysqld_safe –user=mysql& //这个动作主从服务器相同
在主服务器建立帐户并授权Slave:
#GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.137' identified by 'q1w2e3r4';//帐户建议使用非root帐号密码,本命令行仅示例
查询主数据库Master的状态,并记录状态值:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |     640  |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
配置从服务器Slave:
Mysql>change master to master_host=‘192.168.1.136’,master_user=‘root’,master_password=’q1w2e3r4’,master_log_file=’ mysql-bin.000003’,master_log_pos=640;
注:此命令行帐户信息,与主服务器授权帐号信息一致
启动从服务器复制功能:
Mysql>start slave;
检查从服务器复制功能状态:
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.136  //主服务器地址
                  Master_User: root         //授权帐户名,尽量避免使用root
                  Master_Port: 3306        //数据库端口,部分版本没有此行
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 1203
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes       //此状态必须YES
            Slave_SQL_Running: Yes       //此状态必须YES
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
 
主从服务器测试:
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database hichina_db;
mysql> use hichina_db;
mysql> create table hichina_tb(id int(3),name char(10));
mysql> insert into hichina_tb values (001,'bobwu');
从服务器Mysql查询:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hichina_db         |  //我在这里
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hichina_db;
Database changed
mysql> show tables;
+----------------------+
| Tables_in_hichina_db |
+----------------------+
| hichina_tb           |  //我在这里
+----------------------+
1 row in set (0.00 sec)
mysql> select * from hichina_tb;
+------+--------+
| id   | name   |
+------+--------+
|    1 | bobwu  |   //我在这里
+------+--------+
1 row in set (0.00 sec)

你可能感兴趣的:(数据库,mysql,职场,主从,休闲)