MySql第零章,安装及集群配置
一、MySql安装
1、RPM安装
RPM安装,无法自定义一些安装路径和配置文件路径
##以后再填坑
2、Generic安装
二进制 预编译 Generic,下载地址:
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
[root@mysq|1 ~ ]# groupadd mysql
[root@mysql1 ~ ]# useradd -r -g mysql -s /bin/false mysql
[root@mysql1 ~ ]# cd /usr/local
[root@mysq|1 local]# tar -zxvf /opt/software/file/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
[root@mysq|1 local]# ln -s mysql-5.7.29-linux-glibc2.12-x86_64 mysql #超链接
1、mysql初始化
没有编译安装的过程
[root@mysq|1 local]# cd mysql
[root@mysql1 mysq|]# mkdir mysql-files
[root@mysql1 mysq|]# chmod 750 mysql-files
[ root@mysql1 mysql ]# chown -R mysql .
[root@mysql1 mysql]# chgrp -R mysql .
[root@mysql1 mysq|]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ##初始化目录,注意这里会产生一个 mysql password 要记住
[root@mysq|1 mysq|]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data ##公钥私钥
[root@mysql1 mysq|]# chown -R root .
[root@mysql1 mysq|]# chown -R mysql data mysql-files
2、创建配置文件
[root@mysql1 mysq|]# cp -rf support-files/my-default.cnf /etc/my.cnf
##如果没有my-default.cnf文件的话,直接在/etc下创建my.cnf文件
##填写内容如下:
##[mysqld]
##basedir=/usr/local/mysql
##datadir=/usr/local/mysql/data
3、将mysql命令存入path
[root@mysq|2 mysq|]# /usr/local/mysql/bin/mysql ##命令不管用
[root@mysql1 mysq|]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@mysq|1 mysq|]# source /etc/profile ##echo $PATH查看是否添加进去
4、启动mysql
方法一:使用mysqld_safe
[root@mysql1 mysq|]# bin/mysqld_safe --user=mysql &
方法二:使用mysql.service脚本启动[一般使用这个]
[root@mysq|1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@mysq|1 mysq|]# chmod a+x /etc/init.d/mysqld
[root@mysq|1 mysq|]# chkconfig --add mysqld
[root@mysq|l1 mysq|]# chkconfig mysqld on ##设置开机启动
[root@mysq|1 mysq|]# service mysqld start ##启动mysql
##service mysqld start ##启动mysql
##service mysqld stop ##关闭mysql
##service mysqld restart ##重启mysql
##service mysqld status ##查看mysql状态
5、初始化修改密码
[root@mysql1 mysq|]# mysql -uroot -p ##密码为空
##如果登录不进去
##vi /etc/mysql.cnf
##添加
##skip-grant-tables
##重启mysql
[root@mysql1 mysq|]# use mysql
[root@mysql1 mysq|]# UPDATE user SET authentication_string=PASSWORD('admin123') where USER='root'; ##修改密码
或者
alter user root@'localhost' identified by 'admin123';
[root@mysql1 mysq|]# FLUSH PRIVILEGES; ##刷新权限
6、远程访问权限
[root@mysql1 mysq|]# 重启mysql,用新密码登录后
[root@mysql1 mysq|]# grant all privileges on *.* to 'root'@'% 'identified by 'admin123' with grant option; ##远程访问mysql
[root@mysql1 mysq|]# FLUSH PRIVILEGES; ##刷新权限
7、如果需要重新初始化mysql
[root@mysql1 ~]# killall mysqld
[root@mysql1 ~]# rm -rf /usr/local/mysql/data
[root@mysql1 mysql]# chown -R mysq| .
[root@mysql1 mysql]# chgrp -R mysql .
[root@mysql1 mysq|]# bin/mysqld -initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
[root@mysql1 mysq|]# bin/mysql_ssl_rsa_setup
[ root@mysql1 mysql ]# chown -R root .
[root@mysql1 mysql ]# chown -R mysql data mysql-files
遇到问题:
1、
bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:
yum install -y libaio //安装后在初始化就OK了
或者
yum install -y libaio.so.1
2、killall no such file or directory
##没有命令的话
yum -y install killall
或
yum providers killall查看哪有killall的包,再 yum install 包
3、Source Code安装
源码包安装 Source Code
##以后再填坑
二、Mysql主从复制
原理:
MySQL复制过程分成三步:
1 master将改变记录到二进制日志(binary log) 。这些记录过程叫做二 进制日志事件,binary log events
2 slave将master的binary log events拷贝到它的中继日志(relay log)
3 slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的
1、单主单从
1.1、master设置
修改添加 /etc/my.cnf
[mysqld]
##主服务器唯一ID[必须]
server-id=1
##启用二进制日志binary log[主从必须]
##chown mysql.mysql /usr/local/mysql赋予权限
log-bin=mysql-bin
##根目录
basedir=/usr/local/mysql
##临时目录
tmpdir=/usr/local/mysql
##数据目录
datadir=/usr/local/mysql/data
##主机读写都可以:0
read-only=0
##设置不需要复制的数据库 mysql是出厂的默认库
binlog-ignore-db=mysql
##设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
master建立账户并授权复制权限给slave
##语法:GRANT REPLICATION SLAVE ON *.* TO '账号'@'从机IP' IDENTIFIED BY 'admin123';
##授权
GRANT REPLICATION SLAVE ON *.* TO 'ren'@'192.168.0.107' IDENTIFIED BY 'admin123';
##刷新权限
flush privileges;
##查看主机状态 file要复制的二进制文件 position从哪开始复制
show master status;
1.2、slave设置
修改 /etc/my.cnf
[mysqld]
##主服务器唯一ID[必须]
server-id=2
##根目录
basedir=/usr/local/mysql
##数据目录
datadir=/usr/local/mysql/data
##启用中继日志。
relay-log=mysql-relay
slave从机上配置需要复制的主机
##语法
## CHANGE MASTER TO MASTER_HOST='主机IP',MASTER_USER='ren',MASTER_PASSWORD='admin123',
## MASTER_LOG_FILE='file的名字',MASTER_LOG_POS=position数字;
##配置
CHANGE MASTER TO MASTER_HOST='192.168.0.111',
MASTER_USER='ren',MASTER_PASSWORD='admin123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=341;
##启动从服务器复制功能
start slave;
##检测--下面两个参数都是YES,则说明主从配置成功
show slave statusG
##Slave_IO_Running : YES
##Slave_SQL_Running:YES
##############停止主从复制功能#################
stop slave
其他命令解析:
1、RESET MASTER
功能说明:删除所有的binglog日志文件,并将日志索引文件清空,重新开始所有新的日志文件。用于第一次进行搭建主从库
时,进行主库binlog初始化工作;
注意reset master 不同于purge binary log的两处地方
①. reset master 将删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件 起始值从000001 开始,然而
purge binary log 命令并不会修改记录binlog的顺序的数值
②. reset master 不能用于有任何slave 正在运行的主从关系的主库。因为在slave 运行时刻 reset master 命令
不被支持,reset master 将master 的binlog从000001 开始记录,slave 记录的master log 则是reset
master 时主库的最新的binlog,从库会报错无法找的指定的binlog文件。
2、RESET SLAVE
功能说明:用于删除SLAVE数据库的relaylog日志文件,并重新启用新的relaylog文件;
reset slave 将使slave 忘记主从复制关系的位置信息。该语句将被用于干净的启动, 它删除master.info文件和
relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。
使用reset slave之前必须使用stop slave 命令将复制进程停止。
来源:oschina
链接:https://my.oschina.net/ngc7293/blog/4290647