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