MySQL官方压缩包安装:


1:下载mysql官方版本,此处以目前最新版本5.7.14为例,下载的64位版本文件为:

mysql-5.7.14-linux-glibc2.5-x86_64.tar

2:解压文件

-linux-glibc2.-x86_64.-linux-glibc2.-x86_64.tar
-linux-glibc2.-x86_64.tar.gz
-linux-glibc2.-x86_64 /data1/mv mysql-5.7.14-linux-glibc2.5-x86_64 mysql

这里/data1是服务器上的挂载扩展点,因此放在该挂载点下,并将解压文件夹改名为mysql

3:创建mysql用户及用户组

groupadd mysql
useradd -r -g mysql mysql

这里-r表示该用户为系统用户,不能用于登录,可通过以下查看组及用户信息:

cat /etc/group | grep mysql
cat /etc/passwd | grep mysql

4:变更mysql文件夹所属用户及组

chown -R mysql ./mysql
chgrp -R mysql ./mysql

5:mysql初始化

cd /data1/mysql
./bin/mysql_install_db --user=mysql --basedir=/data1/mysql --datadir=/data1/mysql/data/

正常情况下会出现如下结果:

-- :: [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
-- :: [WARNING] The bootstrap log isn't empty:
-- :: [WARNING] --05T08::.109112Z  [Warning] --bootstrap is deprecated. Please consider using --initialize instead
--05T08::.109668Z  [Warning] Changed limits: max_open_files:  (requested )
--05T08::.109675Z  [Warning] Changed limits: table_open_cache:  (requested )

6:编辑启动及配置文件

vim /data1/mysql/support-files/my-default.cnf

将配置文件内容按照如下修改:

[client]
default-character-set=gbk
[mysqld]
character-set-server=gbk
max_allowed_packet=60MB
max_connections=
datadir=/data1/mysql
socket=/data1/mysql/mysql.sock
symbolic-links=
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=gbk
socket=/data1/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

也可以将log及pid文件都改为/data1目录(有人反映会遇到/var/run权限不足等问题)。

vim /data1/mysql/support-files/mysql.server

启动文件内修改basedir及datadir内容:

basedir=/data1/mysql
datadir=/data1/mysql/data

同时,为了在首次启动后有权限登录mysql,先在启动指令(start)中取消权限验证:

case "$mode" in
  'start')
    # Start daemon

    # Safeguard (relative paths, core dumps..)
    cd $basedir

    echo $echo_n "Starting MySQL"
    if test -x $bindir/mysqld_safe
    then
      # Give extra arguments to mysqld with the my.cnf file. This script
      # may be overwritten at next upgrade.
      $bindir/mysqld_safe --datadir=>& &
      wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

      # Make lock for RedHat / SuSE
      if test -w "$lockdir"
      then
        touch "$lock_file_path"
      fi

      exit $return_value
    else
      log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
    fi
    ;;

在mysqld_safe启动指令的参数中,暂时加入“--skip-grant-tables”参数,这一步非常重要,否则会报各种类似错误:

ERROR  (): Access denied for user 'root'@'localhost' (using password: YES).
ERROR  (): Access denied for user 'root'@'localhost' (using password: NO).

即使正确地用mysql临时生成的密码(/root/.mysql_secret)也是如此。

然后将配置文件、启动文件copy至目的地:

cp -af ./my-default.cnv /etc/my.cnf
cp -af ./mysql.server /etc/init.d/mysqld

7:配置mysql的环境变量

vim /etc/profile

在末尾添加:

export PATH=$PATH:/data1/mysql/bin

生效环境变量:

source /etc/profile

8:配置mysql启动服务

chkconfig --add mysqld
chkconfig --level  mysql on
chkconfig

正常情况下mysqld已设置为系统服务:

mysqld             :off    :off    :on    :on    :on    :on    :off
netconsole         :off    :off    :off    :off    :off    :off    :off
network            :off    :off    :on    :on    :on    :on    :off

9:创建自定义的日志目录(可选)

如果之前配置文件中日志目录修改为/data1/mysql/log,则需要手动创建该目录:

mkdir /data1/mysql/log
chown -R mysql /data1/mysql/log
chgrp -R mysql /data1/mysql/log

10:启动mysql服务

在centOS7中,直接用systemctl启动即可:

systemctl start mysql

11:更改root用户密码并分配远程访问权限

由于之前在start中取消了权限验证,所以现在可以不输入密码直接连上数据库,这里我们先更改root用户密码,并分配远程访问权限,成功后将去除start启动指令中的取消权限验证参数。

mysql -u root mysql

无需验证直接连接mysql,成功后出现mysql>提示符:

mysql> use mysql
mysql> update user set authentication_string=password(') where user='root';
mysql> flush privileges;
mysql> grant all on *.* to root@';

第一行切换当前数据库;

第二行修改root账户密码,这里的“authentication_string”是较新的版本,老版本的密码字段是"password";

第三行刷新权限;

第四行分配远程访问权限给root用户,这里的密码是“123456”。

接下来修改/etc/rc.d/init.d/mysqld文件,去除脚本中start部分的"--skip-grant-tables"参数,并重启mysql服务,取消匿名登录

  'start')
    # Start daemon

    # Safeguard (relative paths, core dumps..)
    cd $basedir

    echo $echo_n "Starting MySQL"
    if test -x $bindir/mysqld_safe
    then
      # Give extra arguments to mysqld with the my.cnf file. This script
      # may be overwritten at next upgrade.
      $bindir/mysqld_safe --datadir=>& &
      wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

      # Make lock for RedHat / SuSE
      if test -w "$lockdir"
      then
        touch "$lock_file_path"
      fi

      exit $return_value
    else
      log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
    fi
    ;;

注意 mysqld_safe 启动指令后的 --skip-grant-tables 参数已经删除。

刷新服务文件并重启mysql服务:

systemctl daemon-reload
systemctl restart mysql

完成mysql的安装,并且已经可以通过root用户用指定的密码'123456'进行远程访问。

注:如果开启了防火墙,则可通过开启3306端口,或开启mysql服务的方式来配置firewalld:

firewall-cmd --zone=public --add-port=/tcp --permanent
firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --reload

MySQL主从复制配置:


目标:两台mysql服务器互为主从,达到数据互备的目的。

1:修改mysql配置文件

服务器A配置文件(/etc/my.cnf),在mysqld标签下新增如下内容:

log-bin=/data1/mysql/binlog
binlog_format=mixed
server-id=
slave-skip-errors=,,,
read-only=
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
auto-increment-increment=
auto-increment-offset=
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=mysql
relay_log=/data1/mysql/relaylog
log-slave-updates=ON

服务器B配置文件(/etc/my.conf),在mysql标签下新增如下内容:

log-bin=/data1/mysql/binlog
binlog_format=mixed
server-
slave-skip-errors=,,,
read-only=
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
auto-increment-increment=
auto-increment-offset=
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=mysql
relay_log=/data1/mysql/relaylog
log-slave-updates=ON

两台服务器的区别在server-id(可用IP最后一节),以及auto-increment-offset上,自增间隔10,offset分别为1,2可保证对不同服务器并发写操作的id不会冲突。

2:mysql服务器备份用户创建及授权

以命令行模式连接服务器A,创建用户repl并授权:

mysql> create user ';
mysql> grant replication slave on *.* to ';
mysql> flush privileges;

以命令行模式连接服务器B,创建用户repl并授权:

mysql> create user ';
mysql> grant replication slave on *.* to ';
mysql> flush privileges;

3:重启mysql服务器并设置双机互备

在两台mysql服务器上分别重启mysql服务:

systemctl restart mysql

在mysql服务器A上查看master信息:

mysql> show master status;

一般会看到如下信息:

+---------------+----------+--------------+---------------------------------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set |
+---------------+----------+--------------+---------------------------------------------+-------------------+
| binlog. |       |              | information_schema,performance_schema,mysql |                   |
+---------------+----------+--------------+---------------------------------------------+-------------------+
 row in set (0.00 sec)

此时连上服务器B的mysql客户端,配置主服务器:

change master to
master_host='server A IP address',
master_user='repl',
master_password=',
master_log_file='binlog.000001',
master_log_pos=;
start slave;

同理,连接上mysql服务器B的mysql控制台,执行如下指令:

mysql> show master status;

获取服务器B的master信息,类似如下:

+---------------+----------+--------------+---------------------------------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set |
+---------------+----------+--------------+---------------------------------------------+-------------------+
| binlog. |       |              | information_schema,performance_schema,mysql |                   |
+---------------+----------+--------------+---------------------------------------------+-------------------+
 row in set (0.00 sec)

此时连上服务器A的mysql客户端,配置主服务器:

change master to
master_host='server B IP address',
master_user='repl',
master_password=',
master_log_file='binlog.000002',
master_log_pos=;
start slave;

到现在,mysql服务器A与服务器B之间已正确配置了双机主从互备,可以通过show slave status指令查看,其中的Slave_IO_Running是否为Connecting,Slave_SQL_Running是否为Yes。

也可以在服务器A上对数据库做出变更,比如create table操作,会在短时间内自动同步至服务器B。


2016-10-9更新:

在mysql控制台执行change master指令有可能由于之前已配置过主从复制而导致失败,此时需要先停止主从复制的相关READ操作:

STOP SLAVE IO_THREAD;
STOP SLAVE SQL_THREAD;

之后再执行change master指令即可。同时要注意在变更主从复制配置之前,请先确认主从复制用户的权限及密码正确性,并重启mysql。

同时,mysql的错误日志会提供大量信息。


2016-10-18更新:

在mysql配置文件(默认路径/etc/my.cnf)中,需要通过配置来开启函数脚本执行,同时该配置项也会影响主从复制,如下为典型的错误提示:

Error Code:
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

方案1:通过设置全局变量来开启,但重启mysqld后会失效

set global log_bin_trust_function_creators=TRUE

方案2:通过修改mysql配置文件(默认路径/etc/my.cnf),在mysqld配置节中加入配置信息

log_bin_trust_function_creators=true

重启mysqld守护进程即可。

CentOS 7.2 安装配置mysql主从服务器的更多相关文章

  1. Centos7.0配置MySQL主从服务器

    主服务器:192.168.186.131 从服务器:192.168.186.133 主从服务器mysql版本尽量保持一致,安装步骤请阅mysql安装步骤 一.修改主服务器配置文件 #   vi /et ...

  2. 配置mysql主从服务器

    参考:https://www.linuxidc.com/Linux/2016-09/135633.htm 一.Master主服务器配置(192.168.1.3) 1.编辑my.cnf(命令查找文件位置 ...

  3. 在阿里云的CentOS环境中安装配置MySQL、JDK、Maven

    Welcome to Alibaba Cloud Elastic Compute Service ! [root@izbp19stm1x1k2io1e7r3tz ~]# rpm -Uvh http:/ ...

  4. CentOS 7 yum安装配置mysql

    首先去官网下载要用的yum源 传送门:http://dev.mysql.com/downloads/repo/yum/ yum源文件:/home/mysql57-community-release-e ...

  5. CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)

    准备篇: CentOS 6.6系统安装配置图解教程 http://www.osyunwei.com/archives/8398.html 1.配置防火墙,开启80端口.3306端口 vi /etc/s ...

  6. CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)

    CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL) 一.准备篇: /etc/init.d/iptables stop #关闭防火墙 关闭SELINUX vi /etc/sel ...

  7. CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)

    这篇文章主要介绍了CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)的方法,需要的朋友可以参考下 文章写的不错,很详细:IDO转载自网络: 准备篇: 1.配置防火墙,开启 ...

  8. CentOS 6.3安装配置LAMP服务器(Apache+PHP5+MySQL)

    准备篇: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp -- ...

  9. CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL)的方法

    CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL)的方法 准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A I ...

随机推荐

  1. UIView

    //command+R   运行 //command+.   停止 //command+B   预编译 //command+1.2.3  模拟器大小 //command+shift+h  home键 ...

  2. 【代码笔记】iOS-下拉选项cell

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> //加入头文件 #import "ComboBo ...

  3. IoC容器Autofac(5) - Autofac在Asp.net MVC Filter中的应用

    Autofac结合EF在MVC中的使用,上一篇IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)已经介绍了.但是只是MVC中Co ...

  4. SqlServer数据冗余的问题和解决

    1问题: 1>造成了存储空间的浪费. 2>更新异常.删除异常. 所以一般情况不允许在表中出现数据冗余. 2怎么解决? 把原来表中的数据拆分成多个表来存储. 当把表中的信息拆分成多个表来存储 ...

  5. C#中Split用法

    1.用字符串分隔:  using System.Text.RegularExpressions; string str="aaajsbbbjsccc"; string[] sArr ...

  6. 阿里云centos安装svn和submin

    概述 没有找到可以让团队方便使用的云盘,暂时搭建一个svn凑合用一下 svn有三种安装方式 安装方式 服务程序 服务协议 用户和密码 授权 系统配置 svn独立安装 svnserve svn pass ...

  7. MongoDB学习笔记~为IMongoRepository接口更新指定字段

    回到目录 对于MongoDB来说,它的更新建议是对指定字段来说的,即不是把对象里的所有字段都进行update,而是按需去更新,这在性能上是最优的,这当然也是非常容易理解的,我们今天要实现的就是这种按需 ...

  8. OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)

    API 前端服务 每个 OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请求. 以 Nova 为例,nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 ...

  9. Source Insight常用功能设置

    熟悉工具的使用能在一定程度上提高工作效率,但工具永远只是工具,大家要把重点放在内功的修炼上. 符号导航 符号(变量.宏定义.结构定义.枚举.函数等等)在SI 中的检索非常方便.Ctrl+鼠标左键或Ct ...

  10. UrlRewritingNet伪静态的使用方法与解决方案(URL重写)

    在建站初期时,我们往往需要考虑的是使用真静态还是伪静态,这对于往后的站点配置,延展性都会产生深远的影响. 我使用伪静态的唯一目的:SEO优化.毋容置疑,伪静态在对于Spider是非常有利的,因此,我更 ...