tar压缩包安装
#查询mysql
rpm -qa|grep mysql
rpm -qa|grep -i mysql
#删除
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
find / -name mysql
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
#mysql安装
1.解压压缩包
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/software/
2.修改文件夹名字
mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql
3.检查并创建用户和用户组
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql
4.创建data文件夹
mkdir data
5.授权目录和用户
chown -R mysql:mysql mysql/
chmod -R 755 mysql/
6.安装并初始化
执行下面命令之前去/etc/目录下查看是否有my.cnf配置文件,如果有,删除或者修改名字备份起来!不然会出现各种PID或者SOCK有关的问题
/usr/local/software/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/software/mysql/data --basedir=/usr/local/software/mysql
7.复制启动脚本到资源目录
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
8.增加mysqld服务控制脚本执行权限
chmod +x /etc/rc.d/init.d/mysqld
9.将mysqld服务加入到系统服务
chkconfig --add mysqld
10.检查mysqld服务是否已经生效
chkconfig --list mysqld
11.在/etc 路径下面新增 my.cnf 文件
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/software/mysql
datadir=/usr/local/software/mysql/data
socket =/var/lib/mysqld/mysql.sock
character-set-server=utf8mb4
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log-error=/var/log/
pid-file=/var/run/mysqld/mysqld.pid
server-id=1
log-bin=mysql-bin
log-slave-updates=1
default-storage-engine=INNODB
innodb_large_prefix=on
max_connections = 2000
max_connect_errors=2000
#skip-grant-tables
12.授权配置文件
chmod 644 /etc/my.cnf
13.新建路径
在步骤11里面配置了日志文件、pid文件、sock文件的路径,所以要去自己手动创建这些路径,文件不用创建,会自动生成
PID路径:/var/run/mysqld/
LOG路径:/var/log/
SOCK路径:/var/lib/mysqld/
14.授权
chown -R mysql /var/lib/mysqld
chgrp -R mysql /var/lib/mysqld
chown -R mysql /var/run/mysqld
chgrp -R mysql /var/run/mysqld
chown -R mysql /var/log
chgrp -R mysql /var/log
15.启动mysql
service mysqld start
16.查看进程配置生效
ps -ef | grep mysql
17.登录mysql
mysql -uroot -p
1.提示找不到mysql命令的话
ln -s /usr/local/software/mysql/bin/mysql /usr/bin
2.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
ln -s /var/lib/mysqld/mysql.sock /tmp/
18.修改root密码
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
flush privileges;
19.配置3306端口
关闭防火墙:
a. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
b. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
c.查看防火墙状态
service iptables status
如果防火墙打开则配置端口,否则就不用了配置了。打开/etc/sysconfig/iptables文件,找到22端口(这个是默认配置好的),复制多一行在下面,把22改成3306就行,记住,不要复制到最后一行
service iptables restart
20.测试连接 navicat
1. 1130 - Host '192.168.114.1' is not allowed to connect to this MySQL server
flush privileges;
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
flush privileges;
2. 1045 - Access denied for user 'root'@'192.168.114.1' (using password:YES)
flush privileges;
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;
备注:
如果以后mysql启动失败,
[root@pengyy63 ~]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
删除 /var/run/mysqld
rm -rf /var/run/mysqld
mkdir /var/run/mysqld
chown -R mysql /var/run/mysqld
chgrp -R mysql /var/run/mysqld,
如果还是不行,可以进入 /tmp 目录下 ,删除 mysql.sock mysql.sock.lock
rpm安装
1.server安装
rpm -ivh mysql-community-server-5.7.26-1.el6.x86_64.rpm --force --nodeps
2.client安装
rpm -ivh mysql-community-client-5.7.26-1.el6.x86_64.rpm --force --nodeps
3.vim my.cnf 输入任意密码登录mysql
[mysqld]
skip-grant-tables
4.登录mysql,修改密码
flush privileges;
set password for root@localhost = password('root');
flush privileges;
5.vim /etc/my.cnf
[mysqld]
#skip-grant-tables
6.重启mysqld服务
service mysqld restart
一主多从
主从复制是指服务器分为主服务器和从服务器,主服务器负责读和写,从服务器只负责读,主从复制也叫master/slave,master是主,slave是从
主从复制原理:
1.当master主服务器上的数据发生改变时,则将其改变写入 二进制日志文件 中
2.slave从服务器会在一定时间间隔内对master主服务器上的二进制日志文件进行探测,探测其是否发生过改变
3.如果探测到master主服务器的二进制日志文件发生改变,则开始一个 IO Thread 请求master二进制事件
4.同时master 主服务器为每个 IO Thread 启动一个 dump Thread,用于向其发送二进制事件(事件即日志)
5.slave从服务器将接收到的二进制事件保存到自己本地的 中继日志(Realy log) 文件中
6.slave从服务器将启动 SQLThread 从中继日志文件 中读取二进制日志,在本地重放,使其数据和主服务器一致
7.最后 IO Thread 和 SQL Thread 将进入睡眠状态,等待下一次被唤醒
备注:主从数据库不能够实时同步,会产生毫秒级别的误差
master主服务器配置:
log-bin=/var/lib/mysqld/binlog
server-id=1
binlog-do-db = pengyy
log-bin:同步的日志路径及文件名,一定注意这个目录要是mysql有权限写入的
server-id:master端的ID号;
binlog-do-db:要同步的数据库名
还可以设置不同步的数据库:不同步mysql库和test库
binlog-ignore-db = mysql
binlog-ignore-db = test
slave从服务器配置:
server.id=2
1.配置主从服务器 重启mysqld service mysqld restart
192.168.31.45(master)
vim /etc/my.cnf
log-bin=/var/lib/mysqld/binlog
server-id=45
192.168.31.47(slave)
server-id=47
192.168.31.48(slave)
server-id=48
192.168.31.49(slave)
server-id=49
2.设置主从关系
2.1设置主服务器
2.1.1在主服务器上创建有复制数据的账号并授权创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。
首先登陆mysql,然后创建一个用户名为 copy,密码为 123456 的账户,该账户可以被192.168.31网段下的所有ip地址使用,且该账户只能进行主从同步。
grant replication slave on *.* to 'copy'@'192.168.31.%' identified by '123456';
2.1.2建议重置一下主服务器状态 reset master
可以先查看一下主服务器状态 show master status; 一般刚开始设置的是以 position 偏移量为 154
重置主服务器状态 reset master;
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)
2.1.3在主服务器上执行命令,获取主服务器二进制文件binlog文件名及坐标(二进制文件名和坐标值会在后面用到)
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 | 154 | | | |
+---------------+----------+--------------+------------------+-------------------+
2.2设置从服务器
2.2.1重置从服务器的状态 reset slave;
可以先查看一下从服务器状态 show slave status; 正常情况下是 空状态,可以不重置
mysql> show slave status;
Empty set (0.00 sec)
--------------------------------------------------------
stop slave;
reset slave;
2.2.3在从服务器上指定主服务器
CHANGE MASTER TO MASTER_HOST='192.168.31.45',MASTER_PORT=3306,MASTER_USER='copy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;
MASTER_HOST='192.168.31.45' --主服务器ip
MASTER_PORT=3306 --主服务器端口
MASTER_USER='copy' --主服务器上配置过用来数据同步的账号
MASTER_PASSWORD='123456', --主服务器上配置过用来数据同步的账号的密码
MASTER_LOG_FILE='binlog.000001' --二进制文件
MASTER_LOG_POS=154 --偏移量
2.2.4查看从服务器状态 show slave status \G;
2.2.5在从服务器上执行开始复制命令 start slave;
2.3主从验证
2.3.1 show slave status \G;
Slave_IO_Running: No
Slave_SQL_Running: Yes
问题:在进行从服务器安装mysql时,直接将虚拟机克隆 ,导致 auto.cnf 中的 server-uuid 一致
所以修改 uuid
进入mysql select uuid();
mysql> select uuid();
+--------------------------------------+
| uuid() |
+--------------------------------------+
| ca8f7a58-77f9-11e9-a69c-0050562fa741 |
+--------------------------------------+
vim auto.cnf
[auto]
server-uuid=ca8f7a58-77f9-11e9-a69c-0050562fa741
重启 mysqld 服务 service mysqld restart
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
双主双从
1.配置主从服务器 重启mysqld service mysqld restart
192.168.31.45(master)
vim /etc/my.cnf
log-bin=/var/lib/mysqld/binlog
server-id=45
192.168.31.46(master)
log-bin=/var/lib/mysqld/binlog
server-id=46
192.168.31.47(slave)
server-id=47
192.168.31.48(slave)
server-id=48
192.168.31.49(slave)
server-id=49
2.设置主从关系
2.1设置主服务器
2.1.1在主服务器上创建有复制数据的账号并授权创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。
首先登陆mysql,然后创建一个用户名为 copy,密码为 123456 的账户,该账户可以被192.168.31网段下的所有ip地址使用,且该账户只能进行主从同步。
grant replication slave on *.* to 'copy'@'192.168.31.%' identified by '123456';
grant replication slave on *.* to 'copy'@'%' identified by '123456';
2.1.2在主服务器上编辑 my.cnf
在(45)编辑 vim my.cnf 增加以下四行
auto_increment_increment = 2
auto_increment_offset = 1
log-slave-updates
sync_binlog=1
在(46)编辑 vim my.cnf 增加以下四行
auto_increment_increment = 2
auto_increment_offset = 2
log-slave-updates
sync_binlog=1
2.2设置服务器状态(45、46互为主从服务器,45为主,46则是45的从;46为主,45则为46的从)
2.2.1登录45服务器,查看主服务器状态,有必要进行重置
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 | 154 | | | |
+---------------+----------+--------------+------------------+-------------------+
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 | 154 | | | |
+---------------+----------+--------------+------------------+-------------------+
2.2.2登录46服务器查看主状态
ysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 | 599 | | | |
+---------------+----------+--------------+------------------+-------------------+
mysql> reset master;
Query OK, 0 rows affected (0.01 sec)
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 | 154 | | | |
+---------------+----------+--------------+------------------+-------------------+
2.2.3设置主从
192.168.31.45(master) ----> 192.168.31.47(slave)
192.168.31.46(master) ----> 192.168.31.48(slave)
45 、46 互为主从
===========================>>>>>>>>>>>>>>>>>>>>>>>>>>>>
192.168.31.45(master) ----> 192.168.31.46(slave) 192.168.31.47(slave)
CHANGE MASTER TO MASTER_HOST='192.168.31.45',MASTER_PORT=3306,MASTER_USER='copy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;
192.168.31.46(master) ----> 192.168.31.45(slave) 192.168.31.48(slave)
CHANGE MASTER TO MASTER_HOST='192.168.31.46',MASTER_PORT=3306,MASTER_USER='copy',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=154;
2.2.4开始复制
start slave;
--------------------------------------------------------
2.3主从验证
2.3.1 show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
原文:https://www.cnblogs.com/pengyy/p/11318235.html