basedir=/iddbs/mysql-5.7.16

datadir=/iddbs/mysql5.7/data3306

一、自定义Mysql.5.7版本免编译安装:

1、Db-server1安装前期准备

前期准备先确认是否已经安装了Mysql,如果有rpm安装会影响面编译安装:

具体方法如下:

确保是否有已经rpm安装了Mysql:

[root@bogon tool]#rpm -qa | grep mysql

mysql-community-libs-5.7.16-1.el6.x86_64

mysql-community-server-5.7.16-1.el6.x86_64

mysql-community-common-5.7.16-1.el6.x86_64

mysql-community-client-5.7.16-1.el6.x86_64

如果有rpm包删除:

例如:

rpm -e mysql-community-libs-5.7.16-1.el6.x86_64 mysql-community-server-5.7.16-1.el6.x86_64 mysql-community-client-5.7.16-1.el6.x86_64 mysql-community-common-5.7.16-1.el6.x86_64 --nodeps

2、创建软件安装目录:

[root@bogon tool]# mkdir -p /iddbs/

将面编译安装软件包下载或者拷贝至/iddbs/下

[root@bogon iddbs]# ls

mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

[root@bogon iddbs]# tar -zxf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

[root@bogon iddbs]# ls

mysql-5.7.16-linux-glibc2.5-x86_64   mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

将减压目录命名为:

[root@bogon iddbs]# mv mysql-5.7.16-linux-glibc2.5-x86_64 /iddbs/mysql-5.7.16

创建用户:

[root@bogon iddbs]# useradd -s /sbin/nologin -M iddbs

授权给iddbs用户:

[root@bogon iddbs]# chown -R iddbs.iddbs /iddbs/

3、做软链接可以不做如果做了软链接 basedir=/iddbs/mysql以下所有的相关联的basedir必须是basedir=/iddbs/mysql

[root@bogon iddbs]# cd /iddbs/

[root@bogon iddbs]# ls

mysql-5.7.16   mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz

[root@bogon iddbs]# ln -s mysql-5.7.16 / /iddbs/mysql

4、创建数据文件:

[root@bogon iddbs# mkdir -p /iddbs/mysql5.7/data3306

5、初始化数据库:

[root@bogon bin]# pwd

/iddbs/mysql-5.7.16/bin

[root@bogon bin]#

执行命令mysql_install_db --basedir=/iddbs/mysql-5.7.16 --datadir=/iddbs/mysql5.7/data3306 --user=iddbs

初始化错误:

2017-06-10 01:31:22 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize

2017-06-10 01:31:22 [ERROR]   The data directory '/iddbs/mysql5.7/data3306' already exist and is not empty.

需使用以下命令:

mysqld --initialize --user=iddbs --basedir=/iddbs/mysql-5.7.16 --datadir=/iddbsdata/mysql5.7/data3306

在执行安装时必须确保数据目录下为空及(/iddbsdata/mysql5.7/data3306下不含任何文件)否则报错

6、启动数据库常见错误及处理方法:

[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysqld   #将启动文件拷贝至/etc/init.d目录下以可以使用init.d启动

cp: overwrite `/etc/init.d/mysqld'? y

[root@bogon mysql]# cp support-files/my-default.cnf /etc/my.cnf  #将配置文件拷贝到/etc下且名字为my.cnf

[root@bogon mysql]# cat /etc/my.cnf

# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]

port=3306

user=iddbs

password ='newpassword'

socket=/iddbs/mysql5.7/data3306/mysql.sock

[mysqld]

max_connections=1000

max_user_connections=500

wait_timeout=200

user=iddbs

server-id=5

port=3306

basedir=/iddbs/mysql5.7

datadir=/iddbs/mysql5.7/data3306

socket=/iddbs/mysql5.7/data3306/mysql.sock

pid-file=/iddbs/mysql5.7/data3306/mysql.pid

log-bin=/iddbs/mysql5.7/data3306/mysql-bin

relay-log=/iddbs/mysql5.7/data3306/relay-bin

log-error=/iddbs/mysql5.7/data3306/mysql-error.log

interactive_timeout=172800

wait_timeout=172800

max_allowed_packet=16M

expire_logs_days=7

auto-increment-increment=2

auto-increment-offset=1

character-set-server=utf8

collation_server=utf8_general_ci

innodb_data_file_path=ibdata1:1G:autoextend

innodb-buffer-pool-size=15G

binlog_format=row

relay_log_recovery=1

log_bin_trust_function_creators=1

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

symbolic-links=0

lower_case_table_names = 1

character_set_server = utf8

event_scheduler = on

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

# Remove the next comment character if you are not familiar with SQL

#safe-updates

default-character-set = utf8

[myisamchk]

key_buffer_size = 512M

sort_buffer_size = 512M

read_buffer = 8M

write_buffer = 8M

启动报错:

[root@bogon mysql]# /etc/init.d/mysqld start

/etc/init.d/mysqld: line 276: cd: /usr/local/mysql: No such file or directory

Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)

解决方法修改mysql启动文件文件目录路径:

[root@bogon mysql]# vim /etc/init.d/mysqld

if test -z "$basedir"

then

basedir=/iddbs/mysql-5.7.16

bindir=/iddbs/mysql-5.7.16/bin

if test -z "$datadir"

then

datadir=/iddbs/mysql5.7/data3306

fi

sbindir=/iddbs/mysql-5.7.16/bin

libexecdir=/iddbs/mysql-5.7.16/bin

else

bindir="$basedir/bin"

报错退出再次启动:

[root@bogon mysql]# /etc/init.d/mysqld start

启动报错:

Starting MySQL ERROR! Couldn't find MySQL server (/iddbs/mysql5.7/bin/mysqld_safe)

为什么会出现上述情况,由于/etc/init.d/mysqld 启动时指定了/iddbs/mysql5.7/data3306数据文件,但在/iddbs/mysql5.7/下是不含bin的;真正的bin文件在/iddbs/mysql-5.7.16/bin下,因此可做软链接:

ln -s /iddbs/mysql-5.7.16/bin  /iddbs/mysql5.7/bin

再次启动:

[root@bogon mysql]# /etc/init.d/mysqld start

Starting MySQL.... SUCCESS!

启动服务/etc/init.d/mysqld 可使用参数

[root@bogon data3306]# /etc/init.d/mysqld

Usage: mysqld  {start|stop|restart|reload|force-reload|status}

含启动、停止、重启、强制重启、状态

7、查看进程:

[root@bogon mysql]# lsof -i:3306

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld  4098 mysql   10u  IPv4  32707      0t0  TCP *:mysql (LISTEN)

[root@bogon support-files]# ps -ef | grep mysql| grep -v grep

root      1978     1  0 Jun09 pts/1    00:00:00 /bin/sh /iddbs/mysql5.7/bin/mysqld_safe --datadir=/iddbs/mysql5.7/data3306 --pid-file=/iddbs/mysql5.7/data3306/mysql.pid

iddbs     2445  1978  0 Jun09 pts/1    00:00:27 /usr/local/mysql/bin/mysqld --basedir=/iddbs/mysql5.7 --datadir=/iddbs/mysql5.7/data3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=iddbs --log-error=/iddbs/mysql5.7/data3306/mysql-error.log --pid-file=/iddbs/mysql5.7/data3306/mysql.pid --socket=/iddbs/mysql5.7/data3306/mysql.sock --port=3306

至此mysql5.7安装完成;

二、登录mysql:

[root@bogon bin]# mysql -uroot -p

Enter password:

提示需要输入密码;Mysql5.7登录密码隐藏在错误日志内:

[root@bogon bin]# cd /iddbs/mysql5.7//data3306/

[root@bogon data3306]# ls

auto.cnf        ib_logfile0  mysql             mysql-bin.000003  mysql-bin.index  mysql.pid        performance_schema

ib_buffer_pool  ib_logfile1  mysql-bin.000001  mysql-bin.000004  mysqld_safe.pid  mysql.sock       sys

ibdata1         ibtmp1       mysql-bin.000002  mysql-bin.000005  mysql-error.log  mysql.sock.lock

[root@bogon data3306]# grep password mysql-error.log

2017-06-09T13:18:12.551595Z 1 [Note] A temporary password is generated for root@localhost: &DFbeiVDs3ja   #此为此次安装密码自动生成,每次安装不一样

[root@bogon data3306]# mysql -uroot -p’&DFbeiVDs3ja ’

登录以后发现不能进行任何操作:

mysql>

解决方法:

mysql> set  password=password(‘newpassword’);

mysql> flush privileges;

创建iddbs用户及登录:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'iddbs'@'localhost' identified by 'newpassword';

mysql> flush privileges;

mysql> quit

使用iddbs用户登录:

[root@bogon data3306]# mysql -uiddbs -p’newpassword ’

注意可能有报错:

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 1045 (28000): Unknown error 1045

因为5.7基于安全考虑在命令行输入密码是不安全的所有禁止登录;可使用

[root@bogon data3306]# mysql -uiddbs -p

Enter password: password

mysql>

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.11 sec)

三、db-server2安装

重复db-server1安装过程

四、Mysql主从同步

Mysql部署模式有:一主一从主从同步、一主多从、双主互为主从、双主多从、多主多从环状级联

此次部署采用双主互为主从模式:

  1. 主从复制:

a) 主从复制原理:

主从复制是由于master端binlog记录了所有操作。利用binlog实现同步

Mysql主从复制是一个异步的复制过程(但在一般情况下感觉是实施同步的),数据库数据从一个Mysql数据库(主库master)复制到另一个Mysql数据库(从库slave)。在master与slave之间实现整个主从复制的过程是由三个线程参与完成的。其中两个线程(SQL线程和IO线程)在slave端,另外一个线程(IO线程)在master端。

要是先Mysql的主从复制,首先必须打开master端的binlog(mysql-bin.XXXXXX)功能。否则无法实现主从复制。因为整个复制过程实际上就是slave从master端获取binlog日志,然后在slave自身上以相同的顺序执行获取的binlog日志中所记录的各种操作。

b) 主从复制的应用:
主从服务器互为备份,主从设置可以加强数据架构的健壮性,当主出问题时,可以人工或者自动切换到从服务器上继续提供服务。
主从服务器可实现读写分离分担网站压力。

c) 主从复制具体操作:

  1. 主库(master)配置文件my.cnf开启log-bin

server-id       = 1

# Uncomment the following if you want to log updates

log-bin=/application/mysql/mysql-bin

可以在数据库中查看:

mysql> show variables like 'log%';  #查看主库的binlog开关是否生效(ON状态)

+---------------------------------+---------------------------------------------+

| Variable_name     | Value                                       |

+---------------------------------+---------------------------------------------+

| log               | OFF                                        |

| log_bin           | ON                                         |

  1. 建立主从数据账号

mysql> grant replication slave on *.* to 'rep'@'172.22.2.%' identified by 'xuxuedong';     replication slave为同步权限。

Query OK, 0 rows affected (0.00 sec)
主库授权账号解决从库连接主库的问题。

  1. 锁表数据保证同步数据一致性,
    mysql> flush tables with read lock;

Query OK, 0 rows affected (0.00 sec)

查看binlog节点位置。

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 |      259 |              |                  |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

  1. 从库获取主库节点信息:

如果是主从单复制,从库可以不开启binlog

有两种情况从库必须打开binlog:

1)级联同步:A->B->C那么B必须开启binlog

2)从库做数据备份,数据库备份必须要有全备和binlog日志

[root@CentOS ~]# mysqldump -uroot -pxuxuedong -B -A --events -S /data/3306/mysql.sock  > /opt/new.mysql

[root@CentOS ~]# ls /opt/

new.mysql  rh

  1. 解锁主库:

mysql> unlock tables ;

Query OK, 0 rows affected (0.00 sec)

  1. 数据导入从库

[root@CentOS ~]# mysql -uroot -pxuxuedong   -S /data/3306/mysql.sock  < /opt/new.mysql

[root@CentOS 3306]# cat | mysql -uroot -pxuxuedong -S /data/3306/mysql.sock <<EOF

CHANGE MASTER TO

MASTER_HOST='172.22.2.237',

MASTER_PORT=3306,

MASTER_USER='rep',

MASTER_PASSWORD='xuxuedong',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=259;

EOF

[root@CentOS 3306]# ls /data/3306/data/master.info

/data/3306/data/master.info

上述操作实际是将用户密码等信息写入从库的master.info中。

  1. 从库开始同步:

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G  #查看同步。

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

Slave_IO_State: Waiting for master to send event

Master_Host: 172.22.2.223

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 370

Relay_Log_File: mysql-relay-bin.000002

Relay_Log_Pos: 363

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: 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: 370

Relay_Log_Space: 519

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: 1

1 row in set (0.00 sec)

完成以上主从同步已经实现。

  1. 总结主从复制的步骤:

1、需要两台数据库。

2、配置my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id且不能和主库以及其他从库一样;从库一般不开启log-bin功能。配置后重启服务生效。

3、登录主库增加用于连接主库同步的账号:如rep并授权replication slave同步权限。

4、登录主库,证库锁表“flush tables with read lock;”(窗口不能关闭,窗口关闭及失效。)然后show  master status查看binlog的位置状态。

5、新开窗口,备份或导出原有的数据库,并拷贝到从库所在的服务器目录。如果数据量很大,并且允许停机,可停机打包,而不用mysqldump.

6、J解锁主库:unlock tables;

7、把主库导出的原有的数据恢复到从库。

8、根据主库的show master status 查看binlog的位置状态,在从库执行change master语句。

9、从库开启同步开关,start slave。

10、从库show slave status \G;查看同步状态,并在主库进行更行测试。

d) 忽略权限库同步:
1、主库下忽略mysql库及information-schema库的主从同步。及上文提及的不想同步的数据库在主库添加:

binlog-ignore-db=mysql

binlog-ignore-db=information-schema

2、从库下可以忽略mysql同步:及replicate-ignore-db=mysql 从库主库必须同时使用

Mysql5.7安装错误处理与主从同步及!的更多相关文章

  1. 源码安装mysql,及主从同步

    源码安装mysql [可选] 如果用源码安装cmake软件: cd /home/oldboy/tools/ tar xf cmake-.tar.gz cd cmake- ./configure #CM ...

  2. Linux 安装mysql,mariadb,mysql主从同步

    myariadb安装 centos7 mariadb的学习 在企业里面,多半不会使用阿里云的mariadb版本,因为版本太低,安全性太低,公司会配置myariadb官方的yum仓库 1.手动创建mar ...

  3. mysql5.7 安装错误解决

    1.5.7初始化报错 2019-04-29 21:40:34 [ERROR] Child process: /home/work/mysql/bin/mysqldterminated prematur ...

  4. 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...

  5. CentOS7安装配置MariaDB(mysql)数据主从同步

    CentOS7安装MariaDB并配置主从同步 环境声明: 防火墙firewalld及SElinux均为关闭状态 主库节点:192.168.0.63 从库节点:192.168.0.64 配置主库节点: ...

  6. redis 安装 主从同步 哨兵模式

    一.redis 的安装1.先将安装包放到linux的一个文件夹下面 2.解压压缩包如图所示 3.解压后进入解压文件 4.安装: make 出现it.s a good idea to run 'make ...

  7. mysql数据库的主从同步,实现读写分离 g

    https://blog.csdn.net/qq_15092079/article/details/81672920 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master ...

  8. mysql数据库的主从同步,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别 ...

  9. mariadb配置主从同步遇到的问题

    一:ERROR: No query specified 解决方案: \G后面不能再加分号;,因为\G在功能上等同于;,如果加了分号,那么就是;;(2个分号),SQL语法错误 二:主从同步不成功 Sla ...

随机推荐

  1. 自定义标签(客户化jsp标签)

    客户化jsp标签技术是在jsp1.1版本中才出现的,他支持用户在jsp文件中自定义标签,这样可以使jsp代码更加简单,这些可重用的标签能够处理复杂的逻辑运算和事物或定义jsp网页的输出内容和格式. 创 ...

  2. BZOJ_5416_[Noi2018]冒泡排序_DP+组合数+树状数组

    BZOJ_5416_[Noi2018]冒泡排序_DP+组合数+树状数组 Description www.lydsy.com/JudgeOnline/upload/noi2018day1.pdf 好题. ...

  3. redis 操作使用

    /*1.Connection*/ $redis = new Redis(); $redis->connect('127.0.0.1',6379,1);//短链接,本地host,端口为6379,超 ...

  4. Outlook 开发2

    转自:http://www.cnblogs.com/madebychina/archive/2011/09/20/madebychina_2.html C#使用如下代码调用Outlook2003发送邮 ...

  5. Uploadify API在项目上的应用

    在项目开发中,前端使用easyui,jq的时候,我么涉及到导入的时候都要用到这个上传插件,用法是: 1:先初始化上传控件 2:打开导入的easyui dialog弹出框,dialog里面将上传的inp ...

  6. Identity Server 4 原理和实战(完结)_单点登录实例(添加Flask客户端,Express.js的API)

    idp授权资源的添加 如果下面哪个客户端想访问api2这个资源的话 就把它写上scope里面就可以了 nodeJS的客户端 python的库 MVC客户端分别访问API和API2 python客户端演 ...

  7. MyEclipse 断点打不上 提示 absent line number information

    在加入断点时,提示出 unable to install breakpoint in ...(file name) due to miss line number attributes. midify ...

  8. JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...

  9. 前端开发利器 Sublime Text 3 使用技巧和总结笔记

    这篇文章是本人在使用该工具进行前端开发的自我总结,思路也许不是很清楚,不过还是希望对读者的你有所帮助,千万别把这边文章收藏起来发霉哦,无论背多少次快捷键,还不及自己多实际操作几次. 目前官方版正式版 ...

  10. 网络编程-TCP连接-length

    在使用readLine方式时,常常会遇到因为没有结束标记,而导致阻塞现象. 如果不想使用结束标记,这里可以使用一个固定长度的byte[],来获取流. server package com.net.tc ...