暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql的主从搭建

原创 于天文 2020-11-08
606

需求:
主:192.168.0.1
从:192.168.0.2
1、备库查看数据库的安装目录
[root@Pro-BJVOSTICKET01 ~]# ps -ef | grep mysql
root 1319 1 0 2016 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid
mysql 2190 1319 3 2016 ? 10-21:17:12 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql-error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql.pid --socket=/tmp/mysql.sock --port=3306
root 13757 13613 0 12:24 pts/0 00:00:00 mysql -uroot -px xxxxxxx
root 14172 14094 0 12:40 pts/2 00:00:00 grep --color=auto mysql

	得到mysql的软件目录 :/usr/local/mysql
	得到mysql的数据文件目录:/data/mysql --此目录最好要跟my.cnf文件进行校验
	得到mysql的sock:/tmp/mysql.sock

2、拷贝mysql程序目录到新位置(数据文件在同一目录的情况下不要拷贝数据文件)
备库建如下目录/data/mysql新端口/[app,data]
cp -r /usr/local/mysql/* /data/mysql新端口/app/
3、传输主库的my.cnf 文件到备库更改相关的目录
加入read_only = 1 my.cnf
更改server_id值
更改basedir
更改datadir
4、主库授权登录
1)、主库查询启动模式
MySQL [(none)]> show variables like ‘%gtid_mode%’;
MySQL [(none)]> show variables like ‘log_bin’;
2)、给从库用户名slave02 密码Mysql.02
MySQL [(none)]> grant replication slave on . to ‘slave’@‘172.31.150.37’ identified by ‘Slave.37’;
MySQL [(none)]> flush privileges;
MySQL [mysql]> select host,user from user;
然后执行如下命令记住信息(使用innobackup不用,使用mysqldump需要,最好都记住)
MySQL [(none)]> show master status\G;
5、使用innbackup进行操作
1)、主库备份传输
1、开始进行备份(df -h查看哪个目录存在充足空间创建备份目录进行备份
2、使用xtrbackup
innobackupex --host=127.0.0.1 --user=root --password=Mysql. --port=3316 --socket=/tmp/mysql.sock /data/
innobackupex --defaults-file=/etc/my.cnf --host=127.0.0.1 --user=dbadmin --password=Mysql.112 --port=3316 --socket=/opt/db/mysql5.6/logs/mysql.sock /data/backup
xtrabackup --defaults-file=/etc/my.cnf --backup --host=127.0.0.1 --user=dbadmin --password=Mysql.112 --port=3316 --target-dir=/data/backup/
3-、生成备库执行命令
通过查询备份的xtrabackup_info或4.2步骤里的进行还原(最好是info里的)
CHANGE MASTER TO MASTER_HOST=‘主库IP地址’,
MASTER_USER=‘主库授权用户名’,
MASTER_PASSWORD=‘授权名字对应密码’,
MASTER_PORT=端口,
MASTER_LOG_FILE=‘查到的filename’,
MASTER_LOG_POS=查到的position;
2)、打包备份文件传到备库解包
tar zcvf 备份.tar 备份
scp 备份.tar 192.168.0.2:/目录
tar zxvf 备份.tar
3)、备库执行还原(通过更改的my.cnf。2017-09-08_10-17-48为备份出来的目录)
innobackupex --apply-log 2017-09-08_10-17-48
innobackupex --defaults-file=/data/mysql3326/app/my.cnf --copy-back 2017-09-08_10-17-48
chown -R mysql.mysql /data/mysql228slave
chmod -R 775 /data/mysql228slave

				8.0以上
				#解压
				for f in `find ./ -iname "*\.qp"`; do qpress -dT2 $f  $(dirname $f) && rm -f $f; done 
				#prepare
				xtrabackup --prepare --target-dir=/home/zhoujy/xtrabackup
				#copy,改权限

4)、备库执行数据库启动(my.cnf为你编辑的那个新的)
	 			mysqld --defaults-file=/usr/local/mysql228slave/my.cnf --user=root &	(这个登录方法后面对用户有mysql用mysql,乔老师说不用加就行)				
				mysqld_safe --defaults-file=/usr/local/mysql228slave/my.cnf --user=root & 乔老师说不用加root)
	5)、备库执行登录数据库并更改为slave(sock为辛苦的,即你参数指定的)
				mysql -uroot -pMysql.228 -S /tmp/mysql228slave.sock
				执行如下命令

CHANGE MASTER TO MASTER_HOST=‘172.30.19.193’,
MASTER_USER=‘slave30’,
MASTER_PASSWORD=‘Mysql.30’,
MASTER_PORT=3316,
MASTER_LOG_FILE=‘binlog_193_3316.002446’,
MASTER_LOG_POS=13340465;
查看状态,进行测试
6)、备库执行编辑相关脚本
1-启动脚本start_mysql.sh
/usr/local/mysql228slave/bin/mysqld_safe --defaults-file=/usr/local/mysql228slave/my.cnf &
2-关库脚本 shutdown_mysql.sh
mysqladmin -uroot -pMysql.228 -S /tmp/mysql228slave.sock shutdown
3-登录脚本login.sh
mysql -uroot -pMysql.228 -S /tmp/mysql228slave.sock
7)、清除自己产生的垃圾文件
主库的备份
备份的备份

6、使用mysqldump进行操作

		1)、使用修改的配置文件初始化数据库:
					参数文件[mysqld] 下添加 skip-grant-tables
		2)、初始化数据库(通过my.cnf)
				  更改权限:chown -R mysql.mysql /data/mysql228slave
					7.1版本 mysqld --defaults-file=/data/mysql3339/conf/my.cnf --initialize --user=mysql
					老版本(未测试):mysql_install_db --defaults-file=/data/mysql3336/app/my.cnf  --basedir=/data/mysql3339/app -–datadir=/data/mysql3339/data/datafile
		3) 、尝试启动数据库:
					/data/mysql3336/app/bin/mysqld_safe --defaults-file=/data/mysql3336/app/my.cnf &
					或mysqld
		4)、登录数据库、修改密码为
					/data/mysql3336/app/bin/mysql -uroot -pMysql.105 --socket=/tmp/mysql3336.sock
					 update user set authentication_string=password('Mysql.141') where user='root' and host='localhost';
					commit;
		5)、改回参数重启库	
				然后把参数文件(参数文件[mysqld] 去掉 skip-grant-tables)
					重启数据库:kill或者脚本
		6)、这种方式改的密码需要在改一次	
					mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.141';
					flush privileges;			
		7)、写相关启动关闭脚本
		8)、备份还原
				 登录主库获得信息
				 show master status\G;
					主库备份
					 mysqldump -uroot -pMysql.28 --all-databases --single-transaction  > /data/backup.sql
					远程拷贝
					备库还原数据库					
				   /data/mysql3336/app/bin/mysql -uroot -pMysql.105 --socket=/tmp/mysql3336.sock <backup.sql
		9)、更改为从库连接主库		   
				  CHANGE MASTER TO MASTER_HOST='主库IP地址',
					MASTER_USER='主库授权用户名',
					MASTER_PASSWORD='授权名字对应密码',
					MASTER_PORT=端口,
					MASTER_LOG_FILE='查到的filename',
					MASTER_LOG_POS=查到的position;
		10)、进行测试
		11)、清理数据
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论