MySql主从安装
1 环境介绍
IP地址 节点类型 描述
172.16.93.231 主节点
172.16.93.232 从节点
操作系统:Oracle Linux Server release 6.2
2 安装软件
采用源码安装方式
1. mysql安装包:mysql-5.6.15.tar.gz
Mysql 下载地址:http://dev.mysql.com/downloads/
2. Cmake安装包
mysql5.5以后是通过cmake来编译的
wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
4 主服务器上安装MySql
详细步骤按照“源码方式安装mysql 5.6.15“
5 从库服务器上安装MySql
主库装过程都是源码包编译安装的,并且所有的配置与数据等都统一规划到了/opt/mysql目录中,因此可以将主库整个mysql目录打包,然后传到从库服务器上解包,便可立即使用。
5.1 打包主库
[root@study1 /]# cd /opt
[root@study1 opt]# service mysql.server stop
Shutting down MySQL..... SUCCESS!
tar -czvf mysql.tar mysql/
5.2 从库服务器上解压
[root@study2 opt]# groupadd mysql
[root@study2 opt]# useradd –r –g mysql mysql
[root@study2 opt]# tar -xzvf mysql.tar
[root@study2 support-files]# cp mysql.server /etc/init.d/
[root@study2 support-files]# service mysql.server start
Starting MySQL............................ SUCCESS!
从库安装成功!
设置环境变量:
[root@study1 etc]# cd /etc
[root@study1 etc]# vi profile
在文件最后增加:
PATH=/opt/mysql/bin:/opt/mysql/lib:$PATH
export PATH
5.3 删除auto.cnf文件
删除/opt/mysql/data/auto.cnf文件。
否则启动slave会报如下错误:
Last_IO_Errno: 1593
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
6 配置主库
6.1 在主库上创建一个复制使用的账号,并授予replication slave权限。
mysql> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'172.16.93.232' identified by 'mysql';
Query OK, 0 rows affected (0.08 sec)
6.2 修改主数据库的配置文件my.cnf,开启BINLOG,并设置server-id的值,修改之后必须重启Mysql服务
[mysqld]
log-bin = /opt/mysql/log/mysql-bin.log
server-id=1
实验的时候启动mysql发生错误,原因是mysql用户对/opt/mysql/log没有写权限。
执行# chown mysql /opt/mysql/log后,mysql服务启动成功。
6.3 查询主服务器当前二进制日志名和偏移量
mysql> show master status \G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 120
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
7 配置从库
7.1 设置server-id
修改/opt/mysql/etc/my.cnf,在[mysqld]下增加server-id=10
7.2 执行同步SQL语句
设置主库信息
Mysql> change master to
master_host='172.16.93.231',
master_user='rep1',
master_password='mysql',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=120,
master_connect_retry=10;
“change master to “命令详细见:http://dev.mysql.com/doc/refman/5.6/en/change-master-to.html
正确执行后启动Slave同步进程
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
主从同步检查
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.93.231
Master_User: rep1
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 120
Relay_Log_File: study2-relay-bin.000003
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
。。。
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
注意:change master to 将在/opt/mysql/data/下产生master.info文件,来存放主库信息。
8 验证主从复制效果
在主库上操作:
mysql> use study;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables_in_study |
+-----------------+
| test |
+-----------------+
1 row in set (0.00 sec)
mysql> create table test2 (name varchar(100));
Query OK, 0 rows affected (0.52 sec)
在从库上查看:
mysql> use study
Database changed
mysql> show tables;
+-----------------+
| Tables_in_study |
+-----------------+
| test |
| test2 |
+-----------------+
2 rows in set (0.00 sec)
--转自