gdrocket 发表于 2018-9-27 08:45:38

MYSQL 主从复制读写分离实现

  概述:
根据项目要求,我们编写一个基于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.repoCentOS-Base.repo.save
#wget http://centos.ustc.edu.cn/CentOS-Base.repo
#vi /etc/yum.repos.d/CentOS-Base.repo
把 中的 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
  
  log-bin=mysql-bin
  server-id=1   //默认是1,保持不变
  从服务器Slave
  #vi /etc/my.cnf
  
  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'>
  查询主数据库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
  >
  >
  >
  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;
  +------+--------+
  |>
  +------+--------+
  |    1 | bobwu|   //我在这里
  +------+--------+
  1 row in set (0.00 sec)

页: [1]
查看完整版本: MYSQL 主从复制读写分离实现