Linux系统运维之MYSQL数据库集群部署(主从复制)

一、介绍

    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

    首先安装前提环境:

[[email protected]_Master soft] yum  groupinstall ‘Development tools‘ -y
[[email protected]_Master soft] tar -xf cmake-3.8.1.tar.gz
[[email protected]_Master soft] cd cmake-3.8.1
[[email protected]_Master cmake-3.8.1] ./bootstrap
[[email protected]_Master cmake-3.8.1] gmake && gmke install

    安装mysql:

[[email protected]_Master soft] tar -xf mysql-5.6.36.tar.gz
[[email protected]_Master soft] cd  mysql-5.6.36
[[email protected]_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
[[email protected]_Master mysql-5.6.36] make && make install

    mysql配置相关:

[[email protected]_Master mysql-5.6.36] mkdir -p /data/opt/mysql/data/{3306,binlog,tmp}
[[email protected]_Master mysql-5.6.36] chown -R mysql.mysql /data/opt/mysql
[[email protected]_Master mysql-5.6.36] cp support-files/my-default.cnf /etc/my.conf
[[email protected]_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 = (\[email protected]\h)[\d]>\_
default-character-set = gbk
===================================
#添加mysql环境变量
[[email protected]_Master mysql-5.6.36] echo ‘export PATH=$PATH:/data/opt/mysql/bin‘  >> /etc/profile && source /etc/profile

#初始化数据库
[[email protected]_Master mysql-5.6.36] cd /data/opt/mysql
[[email protected]_Master mysql] ./scripts/mysql_install_db --defults-file=/etc/my.cnf --user=mysql
[[email protected]_Master mysql] ./bin/mysqld_safe --user=mysql &

#添加service启动
[[email protected]_Master mysql] cp /soft/mysql-5.6.36/support-files/mysql.server /etc/init.d/mysqld
[[email protected]_Master mysql] chmod +x /ect/init.d/mysqld

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

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

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

五、配置主从

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

[mysqld]
server-id=209

#InnoDB
innodb_flush_log_at_trx_commit=1
sync_binlog=1

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

([email protected])[(none)] grant replication slave,reload,super on *.* to ‘repl‘@‘192.168.0.2‘ identified by ‘backup‘;
([email protected])[(none)] flush tables with read lock;
([email protected])[(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以及同步账号等信息:

([email protected])[(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;
([email protected])[(none)] > start slave;
([email protected])[(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:

([email protected])[(none)] unlock tables;
([email protected])[(none)] create database testDB;

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

([email protected])[(none)]  show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testDB             |
+--------------------+

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

    

时间: 2024-12-17 19:11:10

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

[转]Linux 系统运维学习方法汇总

Linux 系统运维学习方法汇总 (2014.07.18) from:http://freeloda.blog.51cto.com/2033581/1315694 大纲 一.前言 二.Linux 运维大环境说明 三.Linux 运维学习思路 四.Linux 运维大方向说明 五.Linux 运维学习必看书籍推荐 六.Linux 运维实践内容简介 注,本博文主要用于交流与学习.如有雷同,纯属意外. 一.前言 最近,有不少博友问我.刚进入运维行业怎么学习呢?思路是什么?一点思路也没有,然后与大家在群里

Linux系统运维与架构设计之Linux概述

Linux系统运维与架构设计之Linux概述 Linux系统运维与架构设计 1.1 浅谈计算机系统 1.1.1 计算机硬件系统 现代计算机是基于冯·诺依曼体系结构,由运算器.控制器.存储器.输入设备.输出设备五大部分组成,如下图所示 它们各司其职,完成了数据的计算.存储.传输任务. 下面是它们各个组件的功能介绍: CPU:也被称为中央处理器,由运算器和控制器组成,其主要作用是数据计算(从内存中获取指令并执行后将结果返回给内存或者写入到磁盘)和控制其他设备(声卡显卡,鼠标键盘)协同工作. 内存:采

Linux系统运维面试题,Linux运维经典面试题讲解

这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题. 1.Linux如何挂载windows下的共享目录? mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456 linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号 2.如何查看http的并发请求数与其

Linux系统运维与架构设计

一 本章概览 介绍Linux系统运维与架构设计的方方面面 二 Linux基础入门 认识计算机核心硬件和服务器 Linux发展历史.系统组成.应用领域以及发行版 搭建运维环境:VMWareWorkStation.SecureCRT的使用 Linux系统的基本使用 Shell入门以及命令概述 三 Linux系统管理 文件目录管理 用户管理 权限管理 VIM编辑器的使用 文档压缩打包 程序包管理 网络管理 文件系统管理 内存管理 系统管理(监控.环境变量) 安全管理(selinux,iptables)

这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题

这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题. 一.Linux操作系统知识 1.常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块? 2.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解? 3.企业中Linux服务器系统分区标准是什么?(以硬盘为300G,内存16G为例) 4.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤. 5.安装一台系

linux系统运维企业常见面试题集合(三)

linux系统运维企业常见面试题集合(三) 01  写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行:(2) 一行中,如果包含"11111",则在"11111"前面插入"AAA",在"11111"后面插入"BBB",比如:将内容为0000111112222的一行改为:0000AAA11111BBB2222 [[email protected]~]# cat -n /t

畅聊Linux系统运维的未来

畅聊Linux系统运维的未来我想来跟大家聊聊Linux运维这一行业,从几个方面说下行业的现状.如何学好Linux和如何成为专业运维人员以及云服务对运Linux运维的影响. 一.linux行业状况我们都知道从1991年Linux开始火爆全球,蔓延至中国,随着智能中国.网络繁荣发展,众多应用基本都跑在Linux服务器上面,但对于大多数人来说还是不太了解.1.入坑门槛太高Linux属于类UNIX操作系统,从开发之初就不是针对普通大众的,而是专门从事计算机行业的员.Linux主要以命令行的方式操作,而这

RedHat / Centos   Linux 系统运维与管理实践技巧荟萃,持续更新

RedHat / Centos   Linux  系统运维与管理实践技巧荟萃

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

Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令模式. 在命令模式的情况下,我们按:,进入到了末行模式. 输入wq!,然后回车,强行保存退出. q! [强制退出不保存]q[退出不保存]wq[退出并保存后面也可以加个!] vi /etc/centos-release 查看centos系统版本 原文地址:https://www.cnblogs.com