一、介绍

    Mysql主从复制,前段时间生产环境部署了一套主从复制的架构,当时现找了很多资料,现在记录下

二、拓扑图

三、环境以及软件版本

主机名 IP 操作系统 角色 软件版本
MysqlDB_Master 192.168.0.1 CentOS release 7.1 Master Mysql 5.6.36
MysqlDB_Slave 192.168.0.2 CentOS release 7.1 Slave Mysql 5.6.36

四、源码安装

    之前都是yum直接安装的,这次尝试使用源码安装,安装包如下:

  • mysql-5.6.36.tar.gz
  • cmake-3.8.1.tar.gz

    首先安装前提环境:

[root@MysqlDB_Master soft] yum  groupinstall 'Development tools' -y
[root@MysqlDB_Master soft] tar -xf cmake-3.8.1.tar.gz
[root@MysqlDB_Master soft] cd cmake-3.8.1
[root@MysqlDB_Master cmake-3.8.1] ./bootstrap
[root@MysqlDB_Master cmake-3.8.1] gmake && gmake install

    安装mysql:

[root@MysqlDB_Master soft] tar -xf mysql-5.6.36.tar.gz
[root@MysqlDB_Master soft] cd mysql-5.6.36
[root@MysqlDB_Master mysql-5.6.36] cmake -DCMAKE_INSTALL_PREFIX=/data/opt/mysql -DMYSQL_DATADIR=/data/opt/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1
[root@MysqlDB_Master mysql-5.6.36] make && make install

    mysql配置相关:

[root@MysqlDB_Master mysql-5.6.36] mkdir -p /data/opt/mysql/{3306,binlog,tmp}
[root@MysqlDB_Master mysql-5.6.36] chown -R mysql.mysql /data/opt/mysql
[root@MysqlDB_Master mysql-5.6.36] cp support-files/my-default.cnf /etc/my.conf
[root@MysqlDB_Master mysql-5.6.36] vim /etc/my.conf
===================================
[client]
port = 3306
socket = /data/opt/mysql/3306/mysql.sock #The MySQL Server
[mysqld]
server-id=209
innodb_flush_log_at_trx_commit=1
sync_binlog=1
port = 3306
user = mysql
socket = /data/opt/mysql/3306/mysql.sock
pid-file = /data/opt/mysql/3306/mysql.pid
basedir = /data/opt/mysql
datadir = /data/opt/mysql/data
tmpdir = /data/opt/mysql/tmp
open_files_limit = 10240
lower_case_table_names=1
explicit_defaults_for_timestamp
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #Buffer
max_allowed_packet = 256M
max_heap_table_size = 256M
net_buffer_length = 8k
sort_buffer_size = 2M
join_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 16M #Log
log-bin = /data/opt/mysql/binlog/mysql-bin
binlog_cache_size = 32M
max_binlog_cache_size = 512M
max_binlog_size = 512M
binlog_format = mixed
log_output = FILE
log-error = /data/opt/mysql/binlog/mysql-error.log
slow_query_log = 1
slow_query_log_file = /data/opt/mysql/binlog/slow_query.log
general_log = 0
general_log_file = /data/opt/mysql/binlog/general_query.log
expire-logs-days = 14 #InnoDB
innodb_data_file_path = ibdata1:2048M:autoextend
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_buffer_pool_size = 1024M [mysql]
no-auto-rehash
prompt = (\u@\h)[\d]>\_
default-character-set = gbk
===================================
#添加mysql环境变量
[root@MysqlDB_Master mysql-5.6.36] echo 'export PATH=$PATH:/data/opt/mysql/bin' >> /etc/profile && source /etc/profile #初始化数据库
[root@MysqlDB_Master mysql-5.6.36] cd /data/opt/mysql
[root@MysqlDB_Master mysql] ./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql
[root@MysqlDB_Master mysql] ./bin/mysqld_safe --user=mysql & #添加service,并配置开机启动
[root@MysqlDB_Master mysql] cp /soft/mysql-5.6.36/support-files/mysql.server /etc/init.d/mysqld
[root@MysqlDB_Master mysql] chmod +x /ect/init.d/mysqld
[root@MysqlDB_Master mysql] chkconfig --add mysqld
[root@MysqlDB_Master mysql] chkconfig mysqld on

    优化mysql默认配置,配置访问权限:

[root@MysqlDB_Master ~] mysql -uroot -p
#清空默认数据
(root@localhost)[(none)] > select * from mysql.db \G
(root@localhost)[(none)] > truncate table mysql.db;
(root@localhost)[(none)] > flush privileges;
(root@localhost)[(none)] > select * from mysql.db \G
#配置访问权限
(root@localhost)[(none)] > use mysql;
(root@localhost)[(none)] > desc user;
(root@localhost)[(none)] > grant all privileges on *.* to root@"%" identified by "root";
(root@localhost)[(none)] > update user set Password=password('XXXXXX') where User='root';
(root@localhost)[(none)] > select Host,User,Password from user where User='root';
(root@localhost)[(none)] > flush privileges;
(root@localhost)[(none)] > exit;

    以上,Mysql源码安装完成,在MysqlDB_Slave服务器上进行相同配置即可。

五、配置主从

    关于主从的配置,之前在配置文件里已经填写,“server-id”值主从不同,从值大于主值,主要配置如下:

[mysqld]
server-id=209 #InnoDB
innodb_flush_log_at_trx_commit=1
sync_binlog=1

    连接到主库,配置同步账号并授权从服务器连接:

(root@localhost)[(none)] grant replication slave,reload,super on *.* to 'repl'@'192.168.0.2' identified by 'backup';
(root@localhost)[(none)] flush tables with read lock;
(root@localhost)[(none)] show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 321| | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

    连接到从库,配置主服务器IP以及同步账号等信息:

(root@localhost)[(none)] > change master to master_host='192.168.0.1',master_user='repl',master_password='backup',master_log_file='mysql-bin.000007',master_log_pos=321;
(root@localhost)[(none)] > start slave;
(root@localhost)[(none)] > show slave status \G

    确认主从节点同步正常,主要确认以下值:

Master_Log_File: mysql-bin.000007
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

    连接到主库,解除锁,并创建新DB:

(root@localhost)[(none)] unlock tables;
(root@localhost)[(none)] create database testDB;

    连接到从库,查看新建DB是否同步过来:

(root@localhost)[(none)]  show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| testDB |
+--------------------+

    以上,Mysql集群,主从同步配置完成。

补充:

  1.Mysql5.7安装需要引入boost库

tar -xf  boost_1_59_0.tar.gz -C /usr/local/
cd /usr/local/
ln -s boost_1_59_0 boots
cmake -DCMAKE_INSTALL_PREFIX=/data/opt/mysql -DMYSQL_DATADIR=/data/opt/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
make -j `grep processor /proc/cpuinfo | wc -l` && make install

   2.Mysql5.7密码字段改变

    5.6是Password,5.7是authentication_string

   3.Mysql5.7修改密码

    update user set authentication_string=password('XXXXXX') where User='root';

  4.Mysql5.7初始化

    data目录不需要手动建立:

./bin/mysqld --initialize-insecure --user=mysql --basedir=/data/opt/mysql --datadir=/data/opt/mysql/data

  5.Mysql5.7默认日志时间是UTC

    在配置文件中[mysqld]段落中添加log_timestamps=SYSTEM

Linux系统运维之MYSQL数据库集群部署(主从复制)的更多相关文章

  1. Linux系统运维相关的面试题 (问答题)

    这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题.   一.Linux操作系统知识 1.常见的Linux发行版本都有 ...

  2. Linux系统运维笔记(五),CentOS 6.4安装java程序

    Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选  ru ...

  3. Linux系统运维笔记(四),CentOS 6.4安装Nginx

    Linux系统运维笔记(四),CentOS 6.4安装Nginx 1,安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool op ...

  4. Linux系统运维笔记(四),CentOS 6.4安装 MongoDB

    Linux系统运维笔记(四),CentOS 6.4安装 MongoDB 1,下载 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  5. Linux系统运维笔记(三),设置IP和DNS

    Linux系统运维笔记(三),设置IP和DNS 手工配置静态的IP地址 也就是手工配置IP地址.子网掩码.网关和DNS. vi /etc/sysconfig/network-scripts/ifcfg ...

  6. Linux系统运维笔记(二),Linux文件编辑命令

    Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...

  7. Linux系统运维笔记(一),查看系统版本和设置系统时间

    Linux系统运维笔记 查看系统版本和设置系统时间 查看系统版本 lsb_release -a (适用于所有的linux,包括Redhat.SuSE.Debian等发行版,但是在debian下要安装l ...

  8. Linux系统运维笔记(6),CentOS 7.6双网卡路由配置

    Linux系统运维笔记(6),CentOS 7.6双网卡路由配置. 一,先确认系统版本: [root@localhost ~]# cat /etc/redhat-releaseCentOS Linux ...

  9. 7.学完linux系统运维到底可以做什么?

    linux运维到底可以做什么?(略有改动原文.排版) 运维,很容易从字面理解为运营.维护. 很多朋友认为,在互联网公司中linux系统运维的工作就是安装系统,部署服务.处理紧急故障,为公司里的开发人员 ...

  10. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

随机推荐

  1. Django笔记十七之group by 分组用法总结

    本文首发于微信公众号:Hunter后端 原文链接:Django笔记十七之group by 分组用法总结 这篇笔记介绍 Django 里面 model 的 group by 对应的一些操作. 用到的 M ...

  2. 4.测试类mapper报错

    1.总结:前几天还有今天一直在弄测试类报错的原因,想着项目是一个大整体,写一个mappe测试类,测试一个mapper,这样后面不会出错: 但是在测试mapper的时候一直,出现mapper值为空的异常 ...

  3. 【深度思考】聊聊CGLIB动态代理原理

    1. 简介 CGLIB的全称是:Code Generation Library. CGLIB是一个强大的.高性能.高质量的代码生成类库,它可以在运行期扩展Java类与实现Java接口, 底层使用的是字 ...

  4. 第139篇:JS数组常用方法(map(),reduce(),foreach())

    好家伙,本篇为MDN文档数组方法的学习笔记 Array.prototype.reduce() - JavaScript | MDN (mozilla.org) 数组方法这块的知识缺了,补一下   1. ...

  5. vue页面中展示markdown以及katex公式

    场景 数据库中有markdown语法的字符串,需要展示为正常的页面,难点在于其中的katex数学公式 解决方式 使用showdown及其族系插件 npm i showdown npm i showdo ...

  6. Pwn系列之Protostar靶场 Stack1题解

    (gdb) disasse main Dump of assembler code for function main: 0x08048464 <main+0>: push ebp 0x0 ...

  7. js验证统一社会信用代码

    js验证统一社会信用代码 //验证信用代码 function CheckSocialCreditCode(Code) { var patrn = /^[0-9A-Z]+$/; //18位校验及大写校验 ...

  8. Rust如何引入源码作为依赖

    问题描述 通常我们在rust项目中引入第三方依赖包时,会直接指定包的版本,这种方式指定后,Cargo在编译时会从crates.io这个源中下载这些依赖包. [package] name = " ...

  9. union()并集intersection()交集difference()差集

    union并集,即:合并 intersection()交集 difference()差集 qs1=Course.objects.filter(price__get=240) qs2=Course.ob ...

  10. LeetCode 周赛 346(2023/05/21)仅 68 人 AK 的最短路问题

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. LeetCode 单周赛第 345 场 · 体验一题多解的算法之美 单周赛 345 概览 T1. 删除子串后 ...