概述:
根据项目要求,我们编写一个基于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 –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)