一、介绍

    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. SRS+Docker部署教程

    SRS+Docker部署教程 安装Docker Windows安装docker 安装Hyper-V Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Win ...

  2. 安装 Metrics server

    安装 Metrics server Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展.高效的容器资源指标来源. Metrics Server 从 Kubelets 收集 ...

  3. 1 Android开发书籍

    不管你是Android菜鸟还是Android高手,一定能够找到一本适合自己阅读的书籍.下面为大家推荐8本书. <Android进阶之光> <Android进阶之光>详细并深入讲 ...

  4. pypiwin32里面常用包

    PACKAGE CONTENTS _win32sysloader _winxptheme mmapfile odbc perfmon servicemanager timer win2kras win ...

  5. 多线程结合自定义logback日志实现简单的工单日志输出

    前言 这周学习了logback自定义日志格式.多线程基础.以及常见的定时器,本篇博客主要是结合以上知识实现一个简单的定时全部工单输出任务,再通过自定义的日志打印输出到控制台. 1.logback自定义 ...

  6. React Native组件(二)

    一.创建一个项目 1.1.找到目标目录cmd命令,请尽量不要有中文路径 npx react-native init reactnative03 进入文件 cd reactnative03 启动 npx ...

  7. 一天吃透SpringMVC面试八股文

    说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块. 它通过一套注解,让一个简单的Jav ...

  8. 一个.Net版本的ChatGPT SDK

    ChatGPT大火,用它来写代码.写表白书.写文章.写对联.写报告.写周边...... 啥都会! 个人.小公司没有能力开发大模型,但基于开放平台,根据特定的场景开发应用,却是非常火热的. 为了避免重复 ...

  9. Torchvision datasets中的经典数据集梳理(以及与OCR相关的常用数据集整理)

    这篇文章是在上班摸鱼的时候随手整理的一些常用CV数据集(文末附带我处理好的数据的下载资源) 众所周知,通过使用Torchvision,可以方便快捷地加载一些较为常用的数据集.但是(敲黑板!)如果本地没 ...

  10. [白嫖]阿里云服务器ECS以及无影云桌面

    [白嫖]aliyun 阿里云ECS和无影云桌面 [云服务器 ECS]学生认证约7个月 适合入门级开发者,用于搭建网站.小程序.云博客.部署主流开发环境,如 lamp.node.js.wordpress ...