MySQL源码包安装主从备份
2021/9/30 19:11:25
本文主要是介绍MySQL源码包安装主从备份,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL安装
安装lrzsz、unzip,上传mysql安装包到/usr/local/src,解压mysql包
groupadd mysql useradd -M -g mysql -s /sbin/nologin mysql
安装libaio
yum install -y libaio.x86_64
删除原有my.cnf,防止报错,替换my.cnf
mv /etc/my.cnf /etc/my.cnf.bak cp -f /usr/local/src/mysql5.7.10-glibc/my.cnf /etc/my.cnf #sed -i '49 c\server_id=2' /etc/my.cnf #slave修改id
创建mysql数据文件夹、同步文件夹mysqlbinloginfo
mkdir /home/mysqldata mkdir /home/mysqlbinloginfo
解压MySQL安装包
cd /usr/local/src/mysql5.7.10-glibc tar -xvf mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz -C /usr/local #解压到指定文件夹 mv /usr/local/mysql-5.7.10-linux-glibc2.5-x86_64 /usr/local/mysql #修改文件名
修改文件夹所属用户、所属组
chown -R mysql:mysql /usr/local/mysql/* /home/mysqldata /home/mysqlbinloginfo
修改相关文件夹权限
chmod -R 755 /home/mysqldata
安装mysql
cd /usr/local/mysql/bin ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysqldata
加入系统服务
#更改第47行 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld sed -i '47 c\datadir=/home/mysqldata' /etc/init.d/mysqld echo -e "export PATH=/usr/local/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh
增加系统服务
chkconfig --add mysqld && chkconfig mysqld on systemctl start mysqld #启动服务
初始MySQL密码写入临时变量
mima=`cat /root/.mysql_secret | sed -n '2p'` #获取初始mysql密码 mysqlpw=123 #新root密码为123 databasename=test #数据库名为test user=test #同步数据账号test passwd=abc123 #同步数据密码abc123 cat /root/.mysql_secret | sed -n '2p' source /etc/profile #加载系统配置
登陆MySQL数据库并更改初始密码
mysql -uroot -p$mima --connect-expired-password -e "alter user 'test'@'localhost' identified by '${mysqlpw}';flush privileges;" #${}使用函数方式获取变量
--------------------------至此,mysql安装完成---------------------------------------------
实现主从复制
修改主服务器/etc/my.cnf
server_id=1 #指定MySQL的id login-bin=/home/mysqlbinloginfo/master-mysql-bin #开启二进制日志文件
主服务器创建数据库、同步账号、密码、授权
mysql -uroot -p$mysqlpw -e "create database "$databasename";create user "$user";use mysql;grant replication slave on *.* to '$user'@'%' identified by '${passwd}';flush privileges;"
修改从服务器/etc/my.cnf
server_id=2 log-bin=/home/mysqlbinloginfo/master-mysql-bin #开启二进制日志文件 binlog_do_db=db_test#表示要同步的数据库 #binlog-ignore-db=test #表示不同步 test 数据库 #binlog_do_db=db_test #表示要同步的数据库
启动主从MySQL服务
systemctl start mysqld
登陆主服务MySQL
mysql -uroot -p123
创建数据库表
mysql> use test; mysql> create table student(id int,name varchar(40),age int,PRIMARY KEY(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> insert into student(id,name,age) values (1,"zs",'20');
查看主服务器状态
mysql>show master status;
配置从服务器(连接master服务器)
mysql>change master to master_host='192.168.31.6',master_user='test',master_password='abc123',master_log_file='master-mysql-bin.000002',master_log_pos=154; #master_host是主服务器的ip #master_port=3306(这里没有配置,默认3306) #master_user:Master 服务器授权用户,也就是 Master 前面创建的那个用户 #master_password:Master 服务器授权用户对应的密码 #master_log_file:Master binlog 文件名 #master_log_pos:Master binlog 文件中的 Postion 值 #关于position值,这里做一个说明:如果主服务器已经是有很多数据了的,那就先需要备份主服务器的数据到从服务器中,然后再使用命令show master status记录需要开始同步的位置
开始复制
从服务器执行
start slave #停止命令是:stop slave
查看从服务器状态
show slave status\G; #slave_io_running 及 slave_sql_running 为yes即成功
slave_io_running启动失败
GRANT REPLICATION SLAVE ON . TO 'repl'@'%' identified by '自己用户的密码';
验证主从
mysql疑难问题
无法连接master
解决方法,授权异常
主机
mysql> revoke all privileges on *.* from 'test'@'%'; #删除指定权限 mysql> drop user 'test'@'192.168.%'; #删除指定用户 mysql> select * from mysql.user where user='test'\G #查看test用户拥有的权限 mysql> drop user 'test'; #删除用户 mysql> create user 'test'@'%' identified by 'abc123'; #创建账号赋予密码 mysql> grant replication slave on *.* to 'test'@'%'; #授权所有数据库权限 mysql> flush privileges; #刷新配置 #replication slave all privileges只能授权所有数据库,授权单独数据库会出现权限不够,无法获取schema等数据库日志信息 #可以通过配置/etc/my.cnf文件binlog-ignore-db=mysql指定不同步mysql,或者binlog-do-db=test指定只同步test数据库
从机
mysql> stop slave; #停止复制 mysql> change master to master_host='192.168.31.6',master_user='test',master_password='abc123',master_log_file='master-mysql-bin.000001',master_log_poss=154; #重新连接master mysql> start slave; #开始同步
表不存在
解决方法:
master
[root@localhost ~]# mysqldump -uroot -p123 --all-databases > 2021.5.25.sql #备份数据库 [root@localhost ~]# scp 2021.5.25.sql root@192.168.31.7: #拷贝数据库到从服务器
slave
[root@localhost bin]#mv ~/2021.5.25.sql /usr/local/src/ [root@localhost bin]# cd /usr/local/src/ [root@localhost src]# mysql -uroot -p123 < 2021.5.25.sql #导入数据库
主键异常
解决方法:
master
mysql> show binary logs; #存储数据的操作日志位置 mysql> purge binary logs to 'master-mysql-bin.000003'; #删除多余binlog文件 mysql> reset master; #重置master
slave
mysql> stop slave; #停止同步 mysql> change master to master_host='192.168.31.6',master_user='test',master_password='abc123',master_log_file='master-mysql-bin.000001',master_log_poss=154; #重新连接master mysql> start slave; #开启同步 mysql> show slave status\G #查看slave状态
这篇关于MySQL源码包安装主从备份的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程