您的位置:首页 > 数据库 > MySQL

MYSQL 主从复制读写分离实现

2011-04-07 09:22 591 查看
概述:[/b]

根据项目要求,我们编写一个基于CentOS平台的MYSQL主从部署手册。
为了缩减本文档体积和方便大家部署使用,将不提供操作截图,只提供需要输入的命令,方便大家复制粘贴命令行。
[/b]
Mysql[/b]安装准备:[/b]
测试机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
[/b]
Mysql[/b]主从安装:[/b]
安[/b]装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 .
生[/b]成基本的库、表
#/usr/local/mysql/bin/mysql_install_db --user=mysql
确[/b]认生成的库、表,并授权
# cd /opt/data
# pwd
/opt/data
# ll //务必生成相应的库、表
#chown –R mysql:mysql /opt/data
设[/b]置root密码:
#/usr/local/mysql/bin/mysqladmin –uroot password “q1w2e3r4”
以上操作过程主、从服务器均相同。

Mysql[/b]主从配置:[/b]
修[/b]改配置文件:
主服务器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….
启[/b]动mysql服务:
#/usr/local/mysql/bin/mysqld_safe –user=mysql& //这个动作主从服务器相同
在[/b]主服务器建立帐户并授权Slave:
#GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.137' identified by 'q1w2e3r4';//帐户建议使用非root帐号密码,本命令行仅示例
查[/b]询主数据库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,防止主服务器状态值变化
配[/b]置从服务器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;
注:此命令行帐户信息,与主服务器授权帐号信息一致
启[/b]动从服务器复制功能:
Mysql>start slave;
检[/b]查从服务器复制功能状态:
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均属错误)。
以上操作过程,主从服务器配置完成。

主从服务器测试:[/b]
主[/b]服务器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');
从[/b]服务器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)本文出自 “BOB.WU” 博客,请务必保留此出处http://bobwu.blog.51cto.com/2918362/537077
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: