Centos7搭建Mysql-5.6,及主从复制。

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);

主库插入数据完毕后在从库查看,是否有数据,如果有数据则主从同步成功。

 

 

 

 

 

 

 

 

 

posted @ 2019-06-12 16:48  點燈的人  阅读(403)  评论(0编辑  收藏  举报