MYSQL5.7主从配置,小试牛刀
MYSQL5.7主从复制
准备工作
准备操作系统:centos7,查看系统是否已默认安装mariadb,如果已经安装的话,先删除。
准备MYSQL安装包,不要通过yum安装,采用二进制包的安装方式,方便管理。
下载链接:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz,其他版本可至mysql官网下载
安装MYSQL主库
创建mysq用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
passwd mysql
解压二进制安装包并重命名,解压到/usr/local目录下
tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.19-linux-glibc2.12-x86_64 mysql
创建mysql数据存储目录和日志目录
cd /usr/local/mysql
mkdir data 数据文件目录
mkdir log 日志目录
修改目录及文件所属用户为mysql
chown -R mysql:mysql /usr/local/mysql
创建my.cnf文件,修改配置参数并保存
vi /etc/my.cnf
内容如下:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
server_id=1
port = 3306
user = mysql
log-bin=mysql-bin
character-set-server = utf8mb4
default_storage_engine = innodb
log_timestamps = SYSTEM
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
max_connections = 1000
max_connect_errors = 1000
table_open_cache = 1024
max_allowed_packet = 128M
open_files_limit = 65535
#####======[innodb]
innodb_buffer_pool_size = 200M
innodb_file_per_table = 1
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_purge_threads = 2
innodb_flush_log_at_trx_commit = 1
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 16M
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 30
innodb_data_file_path=ibdata1:1024M:autoextend
#####======[log]
log_error = /usr/local/mysql/log/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/log/mysql-slow.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
初始化数据库
cd /usr/local/mysql
bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --explicit_defaults_for_timestamp
缺少依赖的,安装相应的依赖包
配置mysql为系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
service mysqld start
配置系统环境变量
vi /etc/profile
添加以下内容:
#mysql setting start
PATH=$PATH:/usr/local/mysql/bin
export PATH
#mysql setting end
生效环境变量:
source /etc/profile
登录mysql
mysql -uroot -p 初始化密码在/usr/local/mysql/log目录下的log-err日志文件中
登录之后,需要修改一次密码:
SET PASSWORD=PASSWORD(‘root’);
flush privileges;
注意:如果安装的mysql是5.6版本,则需要删除默认创建的test库。因为所有用户对test库有很大的权限,容易造成安全隐患。5.7版本不存在该问题。
创建远程访问root账户
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘[email protected]’ WITH GRANT OPTION;
安装mysql从库
重复章节2部分的步骤,关键点:/etc/my.cnf ,修改server_id=2 。也要注意观察其他参数配置是否正确,根据实际情况调整。
主从配置
导出主库数据
mysqldump -uroot -p123456 --socket=/data/mysql/node1/mysqld.sock --single-transaction -A --master-data=1 > all_db.sql
说明:-A 表示备份所有库
–master-data=1 表示会记录备份时候的binlog信息
登录远程数据库,执行source命令恢复
mysql -utest -ptest -h(从库IP) -P3306
mysql>source all_db.sql;
在主库上设置一个具有复制权限的用户
grant replication slave on . to [email protected]’(从库IP)’ identified by ‘repl’;
到从库上配置复制
less all_db.sql|grep “change master to”
change master to master_host=’(主库IP)’,master_user=‘repl’,master_password=‘repl’,master_log_file=‘XXX’,master_log_pos=XXX;
start slave;
show slave status\G
连接验证主从配置是否生效
连接主库,做DDL或者DML操作,查看从库,确认主从是否同步。