当前位置:   article > 正文

Linux系统中MySQL数据库主从搭建(步骤详细、零基础教学)_mysql5.7安装主从配置教程linux

mysql5.7安装主从配置教程linux

一、在线安装MySQL数据库

  1. wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
  2. sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  3. sudo yum update
  4. sudo yum install mysql-server
  5. sudo systemctl start mysqld

二、离线安装MySQL数据库

一般来说,如果是公司的生产环境,与外网是不连通的,所以建议使用离线安装

1.卸载系统自带的mariadb

  1. rpm -qa|grep mariadb
  2. rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

2.安装MySQL

提前下载好安装包并放到目录/opt/mysql/中,此处的安装包为:mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar

下载地址:MySQL :: Download MySQL Community Server

  1. cd /opt/mysql/
  2. tar -xvf ./mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar
  3. rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
  4. rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
  5. rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
  6. rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
  7. rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm

或着将rpm包放在本地repository仓库下(/var/www/html/cloudera-repos/mysql-5.7)

yum install mysql-community-{server,client,common,libs}-*

三、主从配置

假设在两台机器10.181.110.10和10.181.110.11上搭建MySQL,其中10主机为主节点,11主机为从节点

1.所有节点配置

(1)确保系统重启时,Mysql服务自启动

systemctl enable mysqld

(2)启动Mysql服务

systemctl enable mysqld

(3)修改Mysql密码

    为了增强安全性,MySQL5.7为root用户随机生成了一个密码,如果安装的是RPM包,则默认是在/var/log/mysqld.log中。可通过以下命令获取MySQL的临时密码,并修改密码。

  1. // 获取默认密码
  2. grep "password" /var/log/mysqld.log
  3. // 登录mysql,修改密码
  4. mysql -u root -p
  5. mysql > ALTER USER USER() IDENTIFIED BY 'Mysql.123456';
  6. mysql > grant all privileges on *.* to 'root'@'%' identified by 'Mysql.123456';
  7. mysql > flush privileges;

2.主节点配置

(1)修改/etc/my.cnf文件,并重启服务

  1. [mysqld]
  2. server-id=10 #服务器id (主从必须不一样)
  3. log-bin=/var/lib/mysql/master10-bin #打开日志(主机需要打开)
  4. binlog-ignore-db=mysql #不给从机同步的库(多个写多行)
  5. binlog-ignore-db=information_schema
  6. binlog-ignore-db=performance_schema
  7. binlog-ignore-db=sys

   注意:log-bin等存储路径的配置,其父路径的属主和组必须是是mysql,且一般权限设置为777。

             如果更改了mysql的存储目录,建议参考默认配置的目录,将新目录的属主和权限也做相应更改

(2)创建从节点访问用户(mysql上执行)

  1. CREATE USER 'slave'@'10.181.110.11' IDENTIFIED BY 'slave.8888';
  2. GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.181.110.11';
  3. select user,host from mysql.user;

(3)查看主节点状态(mysql上执行)

  1. systemctl restart mysql #重启服务
  2. show master status

3.从节点配置

(1)修改/etc/my.cnf文件,并重启服务

  1. server-id=11
  2. relay-log=relay-bin
  3. read-only=1
  4. replicate-ignore-db=mysql # 不复制的库
  5. replicate-ignore-db=information_schema
  6. replicate-ignore-db=performance_schema
  7. replicate-ignore-db=sys

(2)从库关联主库(mysql上执行)

  1. CHANGE MASTER TO MASTER_HOST='10.181.110.10',
  2. -> MASTER_USER='slave',
  3. -> MASTER_PASSWORD='slave.8888',
  4. -> MASTER_LOG_FILE='mysql-bin.000001', #要与master的参数一致 登录主库show marster status查看
  5. -> MASTER_LOG_POS=154; #且要与master的参数一致 登录主库 show marster status 查看

(3)检查状态(mysql上执行)

  1. start slave;
  2. show slave status;

注意:# master_log_file 和 master_log_pos值为主库上面执行show master status得到

              如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,说明配置成功

          # 如果又更改了其他配置,重启服务后导致上面两个参数出现NO,可以重新执行步骤(2)

 

四、其他配置

1.修改数据库文件、日志文件存储位置等参数

     mysql默认的数据存储在/var/lib/mysql/中,如果系统自带的存储不足,后期可能导致服务崩溃。建议条件允许的情况下,为系统挂载数据盘,并将存储位置更改到挂载盘上目录。本例中的数据盘挂载到/data目录下

(1)关闭MySQL服务

sudo systemctl stop mysqld

(2)配置数据库存储位置

  1. vi /etc/my.cnf
  2. # 日志存储位置
  3. log-bin=/data/mysqldata/mysql/master10-bin
  4. # 数据存储位置
  5. data-dir=/data/mysqldata/mysql #原先为/var/lib/mysql
  6. socket=
  7. # 错误日志路径
  8. log-error=/data/mysqldata/mysql/mysql-error.log
  9. # socket路径
  10. socket=/data/mysqldata/mysql/mysql.sock

注意:有关路径的修改,建议注释掉先前的配置。并且设置属主和组为mysql,权限为777

(3)重启mysql,查看配置是否修改成功

  1. // 登录mysql,查看配置信息
  2. select @@datadir;
  3. // 查看数据库引擎
  4. show variables like '%storage_engine%';
  5. // 查看数据库相关文件位置信息
  6. show variables like '%dir%'

五、可能的错误和解决办法

  1.数据存储位置设置问题

Job for mysqld.service failed because the control process exited with error code

  大多是由于数据库一些存储位置的更改,没有同时设置目录的属主和权限,解决办法:

(1)原先已存在的存储目录或文件,通过cp -rp整个拷贝到新目录下,这样会同时拷贝属主和权限

(2)原先没有的目录和文件,可以先创建,然后再通过chown和chmod修改属主和权限

  示例:修改数据存储位置时,原先为/var/lib/mysql路径,其中mysql目录的属主和权限为mysql的读写执行权限 。更改为自定义的路径时,要么通过cp -rp直接将原先mysql目录的复制过来(属主和权限不变)。要么自己创建目录,但是最底层目录的属主和权限要与原先保持一致。

  2.socket文件存储位置问题

  1. [ERROR] Can't start server : Bind on unix socket: Permission denied
  2. [ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql/mysql.sock ?

    解决办法:如果修改了socket路径,需要建立当前路径与原先路径的符号链接     

ln -s /data/mysqldata/mysql/mysql.sock /var/lib/mysql/mysql.sock

2.参考文档

更多配置参考:Linux中MySQL配置文件my.cnf参数优化

                         linux下mysql配置文件my.cnf详解

路径修改参考:Linux 下mysql修改数据库存放目录方法和可能遇到的问题

                         linux下更改MySQL数据库存储路径

                          linux(centos7)修改mysql5.6数据库的数据库存储路径

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/908002
推荐阅读
相关标签
  

闽ICP备14008679号