Linux(CentOS 7)安装和配置MySQL集群 主从复制

MYSQL

1.数据库安装

1.1.增加mysql组

`groupadd mysql`

1.2.建mysql用户,并加入到mysql组中

useradd –g mysql mysql

1.3.进行解压

tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz

1.4.移动或改名文件和目录

mv mysql-8.0.11-linux-glibc2.12-x86_64/usr/local/mysql

进入目录

cd /usr/local/mysql

1.5.进入mysql目录初始化数据库

1.创建data文件夹

mkdir data
mkdir logs

2.安装mysql 依赖包

yum install -y libaio

yum -y install numactl

3.设置目录的所属用户为mysql

chown -R mysql /usr/local/mysql

3.切换用户

cd /usr/local/mysql

su mysql --console

初始化mysql数据库 这里指定的user用户为mysql 所以后面的mysql start 启动也要用mysql用户

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower_case_table_names=1 --console

记住初始化密码:root@localhost: Ee>tS;n5=FA_

1.6.进入mysql目录初始化数据库

su - root 修改mysql配置文件

vi /etc/my.cnf

配置以下内容:

[client]

port=3306

socket=/tmp/mysql.sock

[mysqld]

port=3306

user=mysql

socket=/tmp/mysql.sock

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

log-error=/usr/local/mysql/logs/error.log

pid-file=/usr/local/mysql/mysqld.pid

max_connections=500

transaction_isolation=READ-COMMITTED

character-set-server=utf8mb4

collation-server=utf8mb4_general_ci

lower_case_table_names=1

max_allowed_packet=2048M

default_authentication_plugin=mysql_native_password

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

#skip-grant-tables

[mysqld_safe]

open-files-limit=8192

log-error=/usr/local/mysql/error.log

pid-file=/usr/local/mysql/mysqld.pid

建立mysql服务

cd /usr/local/mysql

cp -a ./support-files/mysql.server /etc/init.d/mysql

chown mysql /etc/my.cnf

chown mysql /etc/init.d/mysql

chmod +x /etc/init.d/mysql

添加到系统服务

chkconfig --add mysql

配置全局环境变量

vi /etc/profile

在 profile 文件底部添加如下两行配置,保存后退出

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

export PATH

设置环境变量立即生效

source /etc/profile

启动mysql服务

su - mysql

service mysql start

登录mysql

mysql -uroot -p

输入密码:Ee>tS;n5=FA_

修改密码:

ALTER user 'root'@'localhost' IDENTIFIED BY 'root'; #对应的换成你自己的密码即可了。

设置可以远程登录

mysql>use mysql

mysql>update user set host='%' where user='root' limit 1;

刷新权限

mysql>flush privileges;

注:

问题:进入Navicat连接MySQL出现下面的2059界面

1.登陆数据库:输入mysql -uroot -p

2.输入use mysql; 出现Database changed

3.输入select user,host from user; 目的为了查看user的root 对应host是什么
我的对应为localhost

4.修改加密规则:输入alter user ‘root’@‘%’ identified with mysql_native_password by ‘root’;

2.数据库主从数据

2.1修改配置文件(/etc/my.cnf)

[mysqld]

log-bin=mysql-bin

server-id=88

2.2重启数据库查看主数据库的当前状态

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000001 |      120 |              |                  |                   |

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

3.从数据库服务器操作:

3.1修改配置文件(/etc/my.conf

server-id=89//不能与主数据库相同

3.2设置从服务器的信息并启动

复制代码

mysql> change master to

`    `-> master_host = "192.168.1.88",//主数据库地址

`    `-> master_port = 3306,//主数据库端口

`    `-> master_user = "root",//主数据库的用户

`    `-> master_password = "root",

`    `-> master_log_file = "mysql-bin.000001",//主数据库的binlog开始位置的日志名称 

`    `-> master_log_pos = 120;//主数据库的binlog日志的Position属性

Query OK, 0 rows affected, 2 warnings (0.06 sec)

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

3.3查看是否配置成功

mysql> show slave status;

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

`               `Slave_IO_State: Connecting to master

`                  `Master_Host: 192.168.1.88:3306

`                  `Master_User: root

`                  `Master_Port: 3306

`                `Connect_Retry: 60

`              `Master_Log_File: mysql-bin.000001

`          `Read_Master_Log_Pos: 120

`               `Relay_Log_File: mysqld-relay-bin.000001

`                `Relay_Log_Pos: 4

`        `Relay_Master_Log_File: mysql-bin.000001

`             `Slave_IO_Running: Yes  //主要查看这两个指标状态

            Slave_SQL_Running: Yes    //主要查看这两个指标状态

到这里主从配置就配置完了!

可能遇到的问题:

在2.3那一步的时候不一定就能够正好 “Slave_IO_Running” 和 “Slave_SQL_Running” 的值都是
YES 这个时候可以这么检查下 当 “Slave_IO_Running” 的值为 Connecting
时是因为slave数据库服务器去访问 master数据库服务器的 bin-log 时失败导致的,

1.这时候应该检查 2.2中设置的参数是不是正确,

2.查看主数据库用户的host权限数据,是否允许从数据库访问

select user,host from user;

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

| user             | host          |

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

| root             | %             |//表示所有ip都可以访问

| slave_admin      | 192.168.25.85 |

| mysql.infoschema | localhost     |//表示只有本地可以访问

| mysql.session    | localhost     |

| mysql.sys        | localhost     |

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

3.要保持主从的数据库保持一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值