Centos7搭建Mysql-5.6.38,及主从复制。
Server1:192.168.1.189 (主)
Server2:192.168.1.190 (从)
1、关闭默认的firewalld防火墙,安装iptables。
systemctl disable firewalld

安装iptables
yum -y install iptables*

并设置iptables开机自启动

2、开始安装mysql-5.6.38
检查是否默认安装了mysql及mariadb,默认安装了就卸载掉。

安装相关依赖包。
yum -y install cmake bison git ncurses-devel gcc gcc-c++
添加一个mysql使用的用户。

下载mysql-5.6.38.tar
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz
解压下载好的软件包。
tar -zxvf mysql-5.6.38.tar.gz

创建数据目录及安装目录。
mkdir -p /usr/local/mysql
mkdir -p /usr/local/mysql/data

查找一下是否有这个文件CMakeCache.txt,有的话就删除。
find / -name CMakeCache.txt
进入解压包进行安装,路径根据自己服务器情况进行指定。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql_3306.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1

检查一下是否有错,若返回值不为0就有错误

进行make编译安装,编译时间较长。
make && make install

安装完成后创建日志需要的目录
mkdir -p /usr/local/mysql/log/errlog/ #错误日志目录
mkdir -p /usr/local/mysql/log/binlog/ #log-bin日志目录
mkdir -p /usr/local/mysql/log/slowlog/ #慢查询日志目录

修改目录的属主属组,及权限。
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/*

设置可读可写权限。

创建mysql-sever系统表。
cd /usr/local/mysql/
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data


报错了需要Perl的依赖

然后在执行上面的语句就好了。
将配置文件移动到/etc下,配置问价你的默认路径。

根据您公司环境,及服务器进行配置)
主配置my.cnf
[client]
#password=your_password
port=3306
socket=/usr/local/mysql/mysql_3306.sock
default-character-set=UTF8
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/usr/local/mysql/mysql_3306.sock
#[mysqld_safe]
log-error=/usr/local/mysql/log/errlog/error.log
pid-file=/usr/local/mysql/mysql.pid
user=mysql
tmpdir=/tmp
skip-name-resolve
skip-external-locking
lower_case_table_names=1
server_id=1
binlog_format=row
log_bin_trust_function_creators=1
log_bin=/usr/local/mysql/log/binlog/mysql-bin
log-slave-updates
#设置log-bin日志删除30之前的,不删除会产生很大的日志
expire_logs_days=30
key_buffer_size=4024M
max_allowed_packet=256M
max_heap_table_size=256M
tmp_table_size=256M
sort_buffer_size=128K
read_buffer_size=4M
read_rnd_buffer_size=8M
myisam_sort_buffer_size=64M
thread_cache_size=64
query_cache_size=64M
max_connections=1000
max_connect_errors=1024
##连接超时##
wait_timeout=172800
interactive_timeout=172800
table_open_cache = 400
expire_logs_days=10
innodb_buffer_pool_size=2G
innodb_file_per_table=1
innodb_log_buffer_size=32M
innodb_open_files=800
sync_binlog=0
#打开慢查询日志功能
slow_query_log = 1
#超过2秒的查询记录下来
long_query_time = 2
##记录下没有使用索引的查询
log_queries_not_using_indexes = 0
slow_query_log_file=/usr/local/mysql/log/slowlog/slowquery.log
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer_size = 128M
sort_buffer_size = 128K
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128K
配置启动脚本。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

在安装路径下先关闭一下mysql在启动。
bin/mysqld stop

启动mysql

软连接mysql使用mysql –uroot –p直接登陆。
ln -s /usr/local/mysql/bin/mysql /usr/sbin/mysql
登陆mysql
mysql -u root –p ###密码为空,回车进入

设置密码
use mysql;
update user set password=PASSWORD('123.com') where user='root';

授权远程登陆。
grant all privileges no *.* to root@”%” identified by “123.com”;
从服务器搭建:
从服务器基本的一些配置跟上面一样,除了目录不一样,用于区分主从。
安装目录
mkdir -p /usr/local/mysqlslave
mkdir -p /usr/local/mysqlslave/data
从服务器的cmake配置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysqlslave -DMYSQL_UNIX_ADDR=/usr/local/mysqlslave/mysql_3306.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysqlslave/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1
创建从数据库的日志目录,跟主不一样所以我体现在word
/usr/local/mysqlslave/log/errlog/ #错误日志
/usr/local/mysqlslave/log/binlog/ #log-bin日志
/usr/local/mysqlslave/log/relaylog/ # 中继日志
/usr/local/mysqlslave/log/slowlog/ #慢查询日志

授权目录
chown -R mysql:mysql /usr/local/mysqlslave
chown -R mysql:mysql /usr/local/mysqlslave/*
chmod 777 -R /usr/local/mysqlslave
chmod 777 -R /usr/local/mysqlslave/*

创建mysql-server表
cd /usr/local/mysqlslave/
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysqlslave/data

报错了,缺少perl,安装一个依赖就好了,再次执行。

再次执行就好了。

从一样的,将my.cnf移动到/etc下面,进行配置。

(根据您公司环境,及需求进行配置)
从配置。Vim /etc/my.cnf
[client]
#password = your_password
port=3306
socket=/usr/local/mysqlslave/mysql_3306.sock
default-character-set=UTF8
## The MySQL server
[mysqld]
port=3306
basedir=/usr/local/mysqlslave/
socket=/usr/local/mysqlslave/mysql_3306.sock
datadir=/usr/local/mysqlslave/data
log-error=/usr/local/mysqlslave/log/errlog/error.log
pid-file=/usr/local/mysqlslave/mysql.pid
user=mysql #此处为mysql源码安装的系统用户名
tmpdir=/tmp
##log_timestamps = SYSTEM
##explicit_defaults_for_timestamp=1
skip-name-resolve
skip-external-locking
lower_case_table_names=1
server_id=2
binlog_format=row
log_bin_trust_function_creators=1
log_bin=/usr/local/mysqlslave/log/binlog/mysql-bin
log-slave-updates
##设置log-bin日志删除30之前的,不删除会产生很大的日志
expire_logs_days=30
### relay_log配置中继日志
relay_log=/usr/local/mysqlslave/log/relaylog/mysql-relay-bin
#
key_buffer_size=4024M
max_allowed_packet=256M
max_heap_table_size=256M
tmp_table_size=256M
sort_buffer_size=128K
read_buffer_size=4M
read_rnd_buffer_size=8M
myisam_sort_buffer_size=64M
thread_cache_size=64
query_cache_size=64M
max_connections=1000
max_connect_errors=1024
wait_timeout=172800
interactive_timeout=172800
table_open_cache=400
expire_logs_days=10
innodb_buffer_pool_size=2G
innodb_file_per_table=1
innodb_log_buffer_size=32M
innodb_open_files=800
sync_binlog=0
## 打开慢查询日志功能
slow_query_log=1
## 超过2秒的查询记录下来
long_query_time=2
## 记录下没有使用索引的查询
log_queries_not_using_indexes=0
slow_query_log_file=/usr/local/mysqlslave/log/slowlog/slowquery.log
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
[isamchk]
key_buffer_size=128M
sort_buffer_size=128K
[myisamchk]
key_buffer=128M
sort_buffer_size=128K
##[mysqlhotcopy]
##interactive_timeout
先关闭一下数据库,在启动

配置启动脚本。
cp /usr/local/mysqlslave/support-files/mysql.server /etc/init.d/mysqld

软连接mysql使用mysql –uroot –p直接登陆。
ln -s /usr/local/mysqlslave/bin/mysql /usr/sbin/mysql

启动mysql

配置主从
主my.cnf配置
Server-id,master务器不能跟slave服务器的id一样。
Bin-log日志的路径指定,要有写入权限。

修改从的my.cnf配置

在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个slave_user用户,密码为123.COM!),并给slave_user用户授权,以用于主库操作从库。
create user "slave_user"@"192.168.1.190" identified by "123.COM!";
grant replication slave on *.* to 'slave_user'@'192.168.1.190';
flush privileges;

select host from mysql.user; #查看用户是否创建成功

查看master(主)状态
show master status;
这里的mysql-bin.000002,和Position值526,slave配置的时候会用到。

导出master的数据到从服务器去,让数据一致。

将数据上传至slave服务器。

在slave(从)数据库导入主服务器的数据。

配置slave,让其主从同步。
mysql> change master to
-> master_host='192.168.1.189',
-> master_user='slave_user',
-> master_password='123.COM!',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=526,
-> MASTER_CONNECT_RETRY=10;

##关于MASTER_CONNECT_RETRY,在主服务器宕机的情况下,从服务器线程重新尝试连接主服务器之前睡眠的秒数。如果主服务器.Info文件中的值可以读取则优先使用,如果未设置,默认为60秒。
启动slave
start slave;
##关闭命令stop slave
##重启命令reset slave
查看slave的状态。
show slave status \G

只要Slave_IO_Running: Yes, Slave_SQL_Running: Yes,主从就搭建成功。若其中一项不为yes,查看mysql的错误日志。
在主数据库创建一个库,看看是否同步。
create database testdb;
use testdb;
create table book(
-> id int(10),
-> name varchar(15),
-> size int);
insert into book (id,name,size) values(1,"test",100);

主库插入数据完毕后在从库查看,是否有数据,如果有数据则主从同步成功。
Centos7搭建Mysql-5.6.38,及主从复制。的更多相关文章
- MySQL(14)---Docker搭建MySQL主从复制(一主一从)
Docker搭建MySQL主从复制(一主一从) 上一篇博客写了MYSQL主从复制原理 : MySQL(13)---MYSQL主从复制原理 这篇我们来写 Docker搭建MYSQL主从复制(一主一从) ...
- 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...
- [置顶] 两主机搭建MySQL主从复制后,show slave status显示:Last_IO_Error: error connecting to master ……
两台主机A.B搭建mysql主从复制关系(A为master,B为slave)后,在slave上执行show slave status,结果中显示Last_IO_Error: error connect ...
- Linux CentOS 安装MySql以及搭建MySql主从复制
前言 在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办 ...
- Vmware搭建LNMP环境(Centos7+Nginx+Mysql+PHP7.1.8)
参考:1.Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7(图文教程) 2.Centos7搭建LNMP环境 3.MySQL5.7修改默认root密码 4.CentO ...
- Linux - centos7 下 MySQL(mariadb) 和 主从复制
目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...
- Docker搭建MySQL主从复制
Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...
- 基于Docker Compose搭建mysql主从复制(1主2从)
系统环境 * 3 Ubuntu 16.04 mysql 8.0.12 docker 18.06.1-ce docker-compose 1.23.0-rc3 *3 ==> PS ###我用的是 ...
- 基于keepalived搭建MySQL的高可用集群
MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...
- 基于keepalived搭建MySQL高可用集群
MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...
随机推荐
- hdu1535——Invitation Cards
Invitation Cards Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- php 在linux 用file_exists() 函数判断 另外一台服务器映射过来的文件是否存在 总是返回false
php 在linux 用file_exists() 函数判断 另外一台服务器映射过来的文件是否存在 总是返回false .如下案例 $type="android"; $url=&q ...
- 如何简单的实现一个tab页title的动画效果
首先我们来看看实现的效果 tab上的title沉下去的效果 先来看看布局 <?xml version="1.0" encoding="utf-8"?> ...
- Sublime Text3 运行python(转)
From:http://blog.csdn.net/hun__ter/article/details/51223031 安装sublime text3后,按Ctrl+b无法运行python文件. 解决 ...
- 工具类之Condition
再次看到Condition,第一感觉还是觉得它和Mutex的功能是一样的,没必要存在.心里这么想,其实自己也知道怎么可能多余呢?老老实实的再分析一下代码,这次一定要把理解出来的内容记下来!都怪平时写代 ...
- Android自定义View分析
一.基本步骤 1.自定义View的属性 2.在View的构造方法中获取自定义属性 3.重写onMesure方法(非必须) 4.重写onDraw方法 二.具体实现 1.自定义View的属性,首先在res ...
- mysqldump命令使用详解
mysqldump是一个数据库备份程序 用法:mysqldump [options] [db_name [tbl_name ...]] 描述:mysqldump是一个客户端逻辑备份的工作,备份的SQL ...
- poj1135
Domino Effect Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10454 Accepted: 2590 De ...
- 用NODEJS处理EXCEL文件导入导出,文件上传
參考文章 http://librajt.github.io/2013/08/04/handle-excel-file-with-nodejs/ 对照了 ExcelJS ,https://github. ...
- Android Interactive Animation
Ref:收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation Ref:界面特效 Ref:BaseAnimation是基于开源的APP,致力于收集各种动画效果( ...