mysql源码安装及主从配置
2017-03-31 16:43
363 查看
MySQL5.7 的编译安装
2016-01-12 17:24 来自于分类 笔记 服务器 Linux
一直嫌弃 MySQL 的编译安装,原因很简单,依赖复杂、容易出错,总之就是麻烦。但这些天由于需要必须编译安装,被迫阅读相关文档,发现现在的 MySQL 安装变得十分简单和容易。
直接开始吧。
一切从必要依赖开始。
yum install -y gcc gcc-c++ ncurses-develperl
本文中系统为 CentOS 7,不同系统的软件包管理器可能用法不同,但需求类似,请准备好 gcc gcc++ ncurses 及 perl 相关编译器或依赖库即可。
必要的文件准备:
mysql5.7.10 (include boost headers)
http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.10.tar.gz
cmake 3.4.1 https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz
首先需要安装 cmake,因此解压刚刚下载的 cmake 3.4.1 编译安装,步骤如下:
tar -xzvf cmake-3.4.1.tar.gz
cd cmake-3.4.1
./bootstrap
make && make install
安装完 cmake,就开始着手 MySQL 编译安装的步骤。首先为添加 MySQL 对应的系统账户,用于保证其本地文件权限分配:
groupadd mysql
useradd -r -g mysql mysql
创建数据库目录:
mkdir -p /var/mysql/data
chown mysql:mysql /var/mysql/data
开始准备编译安装,解压 mysql-boost-5.7.10.tar.gz 并进入其解压后的 mysql-5.7.10 目录,在该目录下执行:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=boost
除了上述参数,编译安装的参数还有很多很多,若需要了解每一个参数的具体含义或者参数的默认值,可以到 MySQL 官网的文档里查阅,在此给出这一版本的查阅地址: http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
执行完 cmake 的配置过程,就需要开始准备最为 漫长的 的编译过程,根据不同机器的配置,时间大约在 2 小时左右(低配情况下 4 小时以上也是可能的)。执行编译和安装操作已经很熟悉了: make && make install。
好的,进行完以上步骤,首先需要改变 mysql 安装目录的所有者,比如我们安装的目录是 /usr/local/mysql,使用命令
chown -R mysql:mysql /usr/local/mysql
修改目录所有者。此时,复制一份默认配置文件
cp /usr/local/mysql/support-files/my-default.cnf/etc/my.cnf
如果提示已存在文件是否覆盖时,覆盖即可。
然后执行数据库的初始化操作,
/usr/local/mysql/bin/mysqld --initialize--user=mysql,
这时候会初始化数据库并创建一个数据库 root 账号,但是要注意,和以前不一样的是,这个账号是有默认密码的,初始化的时候屏幕上会输出初始化的密码,如果错过了,可以通过查看 /root/.mysql_secret 即可看到默认的密码。
执行 cp /usr/local/mysql/support-files/mysql.server /etc/init.d,将 mysql 的服务启动脚本复制过去,然后执行 service mysql.server start 启动 mysql。
最后 /usr/local/mysql/bin/mysql -u root -p,输入密码回车,通过
set password=password('你的密码');
来修改默认密码
至此,基本的安装流程完毕!你可以根据需要,将 mysql 加入开启启动,也可以将 /usr/local/mysql/bin 下的文件加入 PATH 环境变量,更多使用方式可以参考官方文档,写的十分细致。
主从配置:
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:
1、主从服务器分别作以下操作:
1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
3、修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
4、重启两台服务器的mysql
/etc/init.d/mysql restart
5、在主服务器上建立帐户并授权slave:
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identifiedby 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
6、登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
|File |Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308| | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
7、配置从服务器Slave:
mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
8、检查从服务器复制功能状态:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host:192.168.2.222 //主服务器地址
Master_User: mysync //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File:mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File:ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File:mysql-bin.000004
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
......
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
9、主从服务器测试:
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed
mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
|Database |
+--------------------+
| information_schema |
| hi_db |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
从服务器Mysql查询:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db | //I'M here,大家看到了吧
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hi_db
Database changed
mysql> select * from hi_tb; //查看主服务器上新增的具体数据
+------+------+
| id | name |
+------+------+
| 1 | bobu |
+------+------+
1 row in set (0.00 sec)
10、完成:
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。
2016-01-12 17:24 来自于分类 笔记 服务器 Linux
一直嫌弃 MySQL 的编译安装,原因很简单,依赖复杂、容易出错,总之就是麻烦。但这些天由于需要必须编译安装,被迫阅读相关文档,发现现在的 MySQL 安装变得十分简单和容易。
直接开始吧。
一切从必要依赖开始。
yum install -y gcc gcc-c++ ncurses-develperl
本文中系统为 CentOS 7,不同系统的软件包管理器可能用法不同,但需求类似,请准备好 gcc gcc++ ncurses 及 perl 相关编译器或依赖库即可。
必要的文件准备:
mysql5.7.10 (include boost headers)
http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.10.tar.gz
cmake 3.4.1 https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz
首先需要安装 cmake,因此解压刚刚下载的 cmake 3.4.1 编译安装,步骤如下:
tar -xzvf cmake-3.4.1.tar.gz
cd cmake-3.4.1
./bootstrap
make && make install
安装完 cmake,就开始着手 MySQL 编译安装的步骤。首先为添加 MySQL 对应的系统账户,用于保证其本地文件权限分配:
groupadd mysql
useradd -r -g mysql mysql
创建数据库目录:
mkdir -p /var/mysql/data
chown mysql:mysql /var/mysql/data
开始准备编译安装,解压 mysql-boost-5.7.10.tar.gz 并进入其解压后的 mysql-5.7.10 目录,在该目录下执行:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=boost
除了上述参数,编译安装的参数还有很多很多,若需要了解每一个参数的具体含义或者参数的默认值,可以到 MySQL 官网的文档里查阅,在此给出这一版本的查阅地址: http://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
执行完 cmake 的配置过程,就需要开始准备最为 漫长的 的编译过程,根据不同机器的配置,时间大约在 2 小时左右(低配情况下 4 小时以上也是可能的)。执行编译和安装操作已经很熟悉了: make && make install。
好的,进行完以上步骤,首先需要改变 mysql 安装目录的所有者,比如我们安装的目录是 /usr/local/mysql,使用命令
chown -R mysql:mysql /usr/local/mysql
修改目录所有者。此时,复制一份默认配置文件
cp /usr/local/mysql/support-files/my-default.cnf/etc/my.cnf
如果提示已存在文件是否覆盖时,覆盖即可。
然后执行数据库的初始化操作,
/usr/local/mysql/bin/mysqld --initialize--user=mysql,
这时候会初始化数据库并创建一个数据库 root 账号,但是要注意,和以前不一样的是,这个账号是有默认密码的,初始化的时候屏幕上会输出初始化的密码,如果错过了,可以通过查看 /root/.mysql_secret 即可看到默认的密码。
执行 cp /usr/local/mysql/support-files/mysql.server /etc/init.d,将 mysql 的服务启动脚本复制过去,然后执行 service mysql.server start 启动 mysql。
最后 /usr/local/mysql/bin/mysql -u root -p,输入密码回车,通过
set password=password('你的密码');
来修改默认密码
至此,基本的安装流程完毕!你可以根据需要,将 mysql 加入开启启动,也可以将 /usr/local/mysql/bin 下的文件加入 PATH 环境变量,更多使用方式可以参考官方文档,写的十分细致。
主从配置:
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:
1、主从服务器分别作以下操作:
1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
3、修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
4、重启两台服务器的mysql
/etc/init.d/mysql restart
5、在主服务器上建立帐户并授权slave:
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identifiedby 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
6、登录主服务器的mysql,查询master的状态
mysql>show master status;
+------------------+----------+--------------+------------------+
|File |Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308| | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
7、配置从服务器Slave:
mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
8、检查从服务器复制功能状态:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host:192.168.2.222 //主服务器地址
Master_User: mysync //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File:mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File:ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File:mysql-bin.000004
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
......
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
9、主从服务器测试:
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed
mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
|Database |
+--------------------+
| information_schema |
| hi_db |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
从服务器Mysql查询:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db | //I'M here,大家看到了吧
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hi_db
Database changed
mysql> select * from hi_tb; //查看主服务器上新增的具体数据
+------+------+
| id | name |
+------+------+
| 1 | bobu |
+------+------+
1 row in set (0.00 sec)
10、完成:
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。
相关文章推荐
- LNMP(linux+nginx+mysql+php)源码安装及协调配置测试笔记
- mysql多实例的安装以及主从复制配置
- MySQL 服务器主从同步架构安装配置学习记录
- Mysql主从安装配置
- MYSQL完整安装和主从双机配置
- win2003系统下学习Mysql主从复制安装配置
- 安装配置Mysql主从
- mysql 安装与主从配置
- mysql 5.5源码编译安装 与 mysql多实例配置
- LAMP配置:mysql-5.5.28+apache-2.4.3+php-5.4.8源码安装错误记录
- mysql源码安装和问题处理及yum本地源和国内163源配置
- win2003 安装2个mysql实例做主从同步服务配置
- 配置源码安装的MySQL同时支持多个字符集
- mysql精简版(初始化安装) 主从复制的配置
- 源码安装和配置apache(httpd)和 PHP 和 mysql全过程(三)
- mysql主从复制安装配置
- 【转】MySQL源码包在Linux上安装和配置
- Ubuntu下MySql源码包安装、配置和使用
- 源码安装和配置apache(httpd)和 PHP 和 mysql全过程(一)
- Linux 源码安装mysql及配置