Linux服务器MySQL数据库安装及主从配置(CentOS 7)

Linux服务器MySQL数据库安装及主从配置(CentOS 7)

Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。

首先确保主从服务器上的Mysql版本相同。

 

一、安装部署mysql

使用yum安装mysql 

0、首先,将MySQL Yum存储库添加到系统的存储库列表中(wget 将yum源下载到指定服务器,我这里放在了 /user/local 上)

     https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

1、安装下载的发行包

     sudo yum localinstall mysql57-community-release-el7-{version-number}.noarch.rpm (替换为你下载的yum源)

2、使用命令检查MySQL Yum存储库是否已成功添加

     yum repolist enabled | grep "mysql.*-community.*"

3、查看MySQL Yum存储库中的所有子存储库(所有可安装的数据库版本),并查看哪些子存储库已启用或禁用

      yum repolist all | grep mysql

4、启用要安装的版本的子存储库,并禁用其他版本的子存储库 (我安装的是mysql5.7 禁用了8.0)

      sudo yum-config-manager --enable mysql57-community

      sudo yum-config-manager --dixable mysql80-community

5、此命令查询当前启用的子存储卡,用来检查其输出来验证是否已启用和禁用了正确的子存储库

     yum repolist enabled | grep mysql

6、确定当前启用的子存储库的版本与所需要的版本一致,通过命令进行安装

    sudo yum install mysql-community-server

7、安装成功启动mysql

     sudo service mysqld start       |       systemctl start mysql

8、启动后查看mysql 运行状态

     sudo service mysqld status     |       systemctl status mysql

9、显示查看在错误日志文件中的 mysql的'root'@'localhost超级用户帐户的临时密码

     grep 'temporary password' /var/log/mysqld.log

     grep password /var/log/mysqld.log

10、通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改root密码以确保安全。

     mysql -uroot -p

     ALTER USER 'root'@'localhost' IDENTIFIED BY '你的临时密码!';

11、启动失败可通过查看mysql日志,获取ERROR信息

       tail -n 20  /var/log/mysqld.log

12、启动并登录成功后,通过命令对数据库进行查看

       show databases;        

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

13、若远程连接数据库,要设置数据库远程连接的权限

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.2' IDENTIFIED BY 'root' WITH GRANT OPTION;

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;

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

14、刷新设置

    flush privileges;    

 

附:Linux 操作 MySql 相关命令

        以前都用service命令管理mysql,现在liunx系统升级了Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程

启动mysql服务:systemctl start mysqld.service
停止mysql服务:systemctl stop mysqld.service
重启mysql服务:systemctl restart mysqld.service
查看mysql服务当前状态:systemctl status mysqld.service
设置mysql服务开机自启动:systemctl enable mysqld.service
停止mysql服务开机自启动:systemctl disable mysqld.service
 

二、配置mysql主从同步

准备两台测试的虚拟机,如上安装mysql环境,并开启mysql服务

主master : 192.168.8.10

从slave  :   192.168.8.11

1、配置主库:

1)、授权给从数据库服务器

mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.8.11' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

2)、修改主库配置文件,开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效

vim /etc/my.cnf

在该配置文件[mysqld]下面添加下面内容:

[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = cmdb

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
......

server-id:master端的ID号;

log-bin:同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的(我这里是偷懒了,直接放在了下面那个datadir下面);

binlog-do-db:要同步的数据库名(只同步指定)

还可以显示 设置不同步的数据库:(除了指定不同步)

binlog-ignore-db = mysql 不同步mysql库和test库
binlog-ignore-db = test

修改配置文件后,重启服务:service mysqld restart   |   systemctl restart mysql

如果启动失败,通过cat /var/log/mysqld.log | tail -30  查看mysql启动失败的日志,从日志内容寻找解决方案。

3)、查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复

mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 |     1304 | cmdb         |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

主服务器已配置好。

 

2、配置从库

1)、理所当然也是从配置文件着手,在/etc/my.cnf 添加下面配置:

[mysqld]
server-id=2
master-host=192.168.8.10
master-user=rep1
master-password=test123456
master-port=3306
replicate-do-db=cmdb
......

重启时报错:查看日志文件发现ERROR处显示     mysqld: unknown variable ‘master-host=

说明mysql不认识这些变量,网上搜罗了一番,原因是mysql5.5+版本主从复制不支持这些变量,需要在从库上用命令来设置:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
  MASTER_PORT=3306,
  MASTER_USER='rep1',
  MASTER_PASSWORD='test123456',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=1304; #后面两个参数的值与主库保持一致

2)、启动slave进程

mysql> slave start;    |   start slave;
Query OK, 0 rows affected (0.04 sec)

3)、show slave status 命令进行查看slave的状态,如果下面两项值为YES,则表示配置正确:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

从库正在等待主库更新数据。。。Waitin for master to send event...

(若是新建搭建的Mysql可省略步骤三)

三、同步主库已有数据到从库

主库操作:

1、停止主库的数据更新操作

mysql>flush tables with read lock;

2、新开终端,生成主数据库的备份(导出数据库)

[root@zhoujietest ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql

3、将备份文件传到从库

[root@zhoujietest ~]# scp cmdb.sql root@192.168.8.11:/root/

4、主库解锁

mysql>unlock tables;

从库操作:

1、停止从库slave

mysql>slave stop;

2、新建数据库cmdb

mysql> create database cmdb default charset utf8;

3、导入数据

[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql 

4、查看从库已有该数据库和数据 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

四、主从搭建完成

此时主从库的数据完全一致,如果对主库进行增删改操作(包括创建数据库,删除数据库,创建表等等。),从库会自动同步进行操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值