1、概述

MysqLre.jpg" style="border:0px;vertical-align:middle;margin:5px 0px;height:auto;" alt="87631474290347.jpg" src="http://www.corasql.cn/blog/wp-content/uploads/2016/09/87631474290347.jpg">


2、所需软件

MysqLre2.png" style="border:0px;vertical-align:middle;margin:5px 0px;height:auto;" alt="1491474290347.png" src="http://www.corasql.cn/blog/wp-content/uploads/2016/09/1491474290347.png">

3、MysqL软件的安装(rpm安装,两台服务器上都要安装数据库软件)

3.1、查询服务器上是否已经安装的MysqL

# rpm -aq | grep mariadb

3.2、先卸载旧的版本

#如果是生产环境,请谨慎卸载,这个包可能会影响其它软件的使用,如果不卸载,安装MysqL5.7会报错,即安装不了。

卸载旧版本mariadb

rpm -e mariadb-libs �Cnodeps

3.3、安装软件

//新建msyql用户禁止登录shell

groupadd MysqL

useradd -r -s /sbin/nologin -g MysqL MysqL

解压

tar xvf MysqL-5.7.15-1.el7.x86_64.rpm-bundle.tar

安装软件

rpm -ivf MysqL-community-common-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-libs-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-libs-compat-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-client-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-embedded-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-devel-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-embedded-devel-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-server-5.7.15-1.el7.x86_64.rpm

// MysqL-community-test依赖perl,需要安装perl-Data-Dumperperl(JSON)

yum install perl-Data-Dumper perl-JSON -y

rpm -ivf MysqL-community-test-5.7.15-1.el7.x86_64.rpm

rpm -ivf MysqL-community-embedded-compat-5.7.15-1.el7.x86_64.rpm

3.4、MysqL 5.7.15修改密码

/bin/systemctl start MysqLd.service

查看密码

sudo grep 'temporary password' /var/log/MysqLd.log

MysqL -u root -p //输入上条命令查看到的密码

进入MysqL,修改密码

MysqL> set password=password('123456');

MysqL>flush privileges;

设置开机启动

systemctl enable MysqLd

3.5、开启MysqL的3306端口号,给root用户授权,用于远程访问

3.5.1永久关闭iptablesSelinux

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

临时关闭Selinux

setenforce 0

永久关闭Selinux

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

重启系统生效

3.5.2、给root用户授权,使远程客户端才能够连接过来

MysqL> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

MysqL> flush privileges;

4、主从复制配置步骤如下:

4.1、主从服务器分别作以下操作:

systemctl stop MysqLd

4.2、修改主服务器master:

#vi /etc/my.cnf
[client]

default-character-set=gbk

[MysqLd]

character-set-server=gbk

basedir=/usr

datadir=/var/lib/MysqL

port=3306

server_id=173

log_bin=master-bin

log_bin_index=master-bin.index

socket=/var/lib/MysqL/MysqL.sock

skip-name-resolve

max_connections=1000

default-storage-engine=InnoDB

long_query_time=1

slow_query_log_file=/var/lib/MysqL/MysqL_slow_query.log

binlog_format=row

# disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

log-error=/var/log/MysqLd.log

pid-file=/var/run/MysqLd/MysqLd.pid

4.3、修改从服务器slave:

#vi /etc/my.cnf

[client]

log_bin=slave-bin

log_bin_index=slave-bin.index

server_id=178

relay_log=relay-log

relay_log_index=relay-log.index

max-connections=1000

4.4、重启两台服务器的MysqL

systemctl start MysqLd

4.5、在主服务器上建立帐户并授权slave:

# MysqL -u root -p

Enter password:

MysqL> grant replication slave on *.* to apexsoft@'192.168.1.178' identified by '123456';

MysqL>flush privileges;

4.6、登录主服务器的MysqL,查询master的状态

MysqLre3.png" style="border:0px;vertical-align:middle;margin:5px 0px;height:auto;" alt="79871474290347.png" src="http://www.corasql.cn/blog/wp-content/uploads/2016/09/79871474290347.png">

注:执行完此步骤后不要再操作主服务器MysqL,防止主服务器状态值变化

4.7、配置从服务器Slave:

MysqL> change master to master_host='192.168.1.173',master_user='apexsoft',master_password='123456',master_log_file='master-bin.000001',master_log_pos=309;

如果在一个机器多个实例上,可能需要指定端口号或者修改了MysqL 默认端口号,在配置主从复制的时候需要加上MASTER_PORT=3306;

启动从服务器复制功能

MysqL>start slave;

4.8、检查从服务器复制功能状态:

MysqL> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.173 //主服务器地址

Master_User: apexsoft //授权帐户名,尽量避免使用root

Master_Port: 3306 //数据库端口,部分版本没有此行

Connect_Retry: 60

Master_Log_File: master-bin.000001

Read_Master_Log_Pos: 322 //#同步读取二进制日志的位置,大于等于>=Exec_Master_Log_Pos

Relay_Log_File: relay-log.000002

Relay_Log_Pos: 284

Relay_Master_Log_File: master-bin.000001

Slave_IO_Running: Yes //此状态必须YES

Slave_sql_Running: Yes //此状态必须YES

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 322

Relay_Log_Space: 451

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_sql_Errno: 0

Last_sql_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 205

Master_UUID: dcc7a60f-2c1d-11e5-ad33-000c29133345

Master_Info_File: /usr/local/MysqL/data/master.info

sql_Delay: 0

sql_Remaining_Delay: NULL

Slave_sql_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_sql_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

1 row in set (0.00 sec)

注:Slave_IO及Slave_sql进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。

可以从主服务器上查看从服务器连接状态:

MysqL>show processlist;

4.9、主从服务器测试:

主服务器MysqL,建立数据库,并在这个库中建表插入一条数据:

MysqL> create database apex_db;

Query OK,1 row affected (0.00 sec)

MysqL> use apex_db;

Database changed

MysqL> create table apex_tb(id int(3),name char(10));
Query OK,0 rows affected (0.00 sec)
MysqL> insert into apex_tb values(001,' apex ');

MysqL> show databases;

+――――――�C+

| Database |

| information_schema |

| apex_db |

| MysqL |

| test |

4 rows in set (0.00 sec)

从服务器MysqL查询:

| MysqL |

+――――――�C+
4 rows in set (0.00 sec)
MysqL> use apex_db

MysqL> select * from apex_tb; //可以看到在主服务器上新增的具体数据

+――+――+

| id | name |

| 1 | apex |

1 row in set (0.00 sec)

centos7.2 Mysql5.7.15版本 一主一从复制的更多相关文章

  1. 关于h5中的fetch方法解读(小结)

    这篇文章主要介绍了关于h5中的fetch方法解读(小结),fetch身为H5中的一个新对象,他的诞生,是为了取代ajax的存在而出现,有兴趣的可以了解一下

  2. 如何在iOS 10上设置日志级别?

    换句话说,如果我在iOS上运行的代码就像这样:那么在Console.app中看到记录的消息需要做些什么呢?

  3. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  4. 为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]

    为什么Xcode8打印[LogMessageLogging]在控制台中,当我调用地图视图时?任何人都可以提出一些建议吗?解决方法PrivacyTheunifiedloggingsystemconsidersdynamicstringsandcomplexdynamicobjectstobeprivate,anddoesnotcollectthemautomatically.Toensuretheprivacyofusers,itisrecommendedthatlogmessagesconsiststri

  5. ios – 在Swift 4中为os_log传递可变参数

    我正在尝试为Swift4/iOS11中的os_log编写一个方便的包装器,但是我已经遇到了传递可变参数的艰难战斗.基本上,我想编写一个如下所示的函数.不幸的是,我似乎无法弄清楚传递参数的神奇语法,并且在CVararg讨论的泥潭中有点迷失.(…这让我想念Python的splatting语法)解决方法我还没有找到解决方案,所以这个愚蠢的黑客:

  6. xcode – osx上的config.log是什么?它在哪里?

    任何人都可以解释’configure’是什么和做什么,一般可以找到config.log文件?

  7. api – HTTPS请求仅在iOS,Ionic 2上失败

    我有一个Ionic2应用程序,它调用SpringBootAPI将推送通知发送到其他设备.API使用HTTPS配置.APIPOST请求适用于除iOS之外的所有内容.我在服务器上的SSL证书是自签名的(可能就是这样吗?

  8. swift学习日志—— Log日志

    Log输出是程序开发中很重要的组成部分,虽然它并不是直接的业务代码,但是却可以忠实地反映我们的程序是如何工作的,以及记录程序运行的过程中发生了什么。在OC中的Log日志设置请看我的另一篇博客:设置Log日志打印开关在Swift中,最简单的输出方法就是使用print,在我们关心的地方输出字符串和值。如果我们在开发中就注意使用了统一的log输出的话,这就变得非常简单了。

  9. 使用XcodeColors 来显示XCGLogger,进行swift 的logger定制

    XcodeColors项目地址XcodeColorsinstallationinstructionsforXcode4,5,6&7:Downloadorclonetherepository.OpentheXcodeColorsprojectwithXcodeIfcompilingforXcode4,thenchangetheschemestousetheXcode4buildconfigurati

  10. swift 自定义log输出

    swift自定义log输出直接上代码

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部