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

[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 �CR mysql .

成基本的库、表

#/usr/local/mysql/bin/mysql_install_db --user=mysql

认生成的库、表,并授权

# cd /opt/data

# pwd

/opt/data

# ll//务必生成相应的库、表

#chown �CR mysql:mysql /opt/data

root密码:

#/usr/local/mysql/bin/mysqladmin �Curoot 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 �Cuser=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_IOSlave_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)


你可能感兴趣的:(项目)