配置主从的复制
主库核心配置
server-id = 1
log-bin=master-bin
binlog-do-db=platform_plus #要给从机同步的库
binlog_format=mixed
slave-skip-errors = 1062,1032,1060
expire_logs_days = 3 # 自动清理 3 天前的log文件 可根据需要修改
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
slow_query_log = on
long_query_time = 3
#log_queries_not_using_indexes=on
early-plugin-load = ""
pid-file=/usr/local/mysql/data/mysqld.pid
从库核心配置
log-bin=salve-bin
binlog_format=mixed
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
server-id = 2
slave-skip-errors = 1062,1032,1060
expire_logs_days = 3
slow_query_log= 1
#slow-query-log-file=/usr/local/mysql/log/mysql-slow.log
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
binlog-do-db=platform_plus
查询master(主服务器)的状态
show master status;
File列和Position列的值一会儿我们要用到。
在主服务器上创建备份专用帐户
##授予权限
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backup'@'%' IDENTIFIED BY 'Attack@123';"
##刷新权限
flush privileges;
配置从服务器
a.如果现在你已经启动从主机,先关闭:stop slave
b.如果停止之后还想重新启动,则必须清除所有的日志信息:flush logs;
c.启动从服务器复制功能
CHANGE MASTER TO MASTER_HOST='xxx.xx.x.xxx',MASTER_USER='test',MASTER_PASSWORD='test',MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=1876421;
查看从库状态
show slave status;
主要查看以下两项:
Slave_IO_Running: Yes
lave_SQL_Running: Yes
主从服务器做测试
create table tb_test(id int(3), name varchar(50));
insert into tb_test values(1,'hello slave');
show databases;
备份还原
-- 仅备份
mysqldump -utest -ptest --database platform_plus > /usr/mysql_back/platform_plus.sql
-- 备份并进行压缩
mysqldump -utest -ptest --database platform_plus | gzip > /usr/mysql_back/platform_plus.sql.gz
-- sql 还原
mysql -utest -p --database platform_plus < /usr/mysql_back/platform_plus.sql
--.gz进行还原
bunzip2 < backupfile.sql.gz | mysql -utest -ptest platform_plus
删除数据库说有的表(谨慎操作)
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = 'xxx';
并且把执行结果运行。
mysql命令登录数据库
1.mysql -u root -ppassword
2.mysql -u root -p
Enter password:****提示输入密码
3.mysql -h localhost -u root -ppassword
4.mysql -h 127.0.0.1 -u root -ppassword
5.-p参数和密码中间不能有间隔
mysql数据库信息查看
1.show databases;查看数据库
2.use [数据库名] ;使用xx数据库
3.CREATE DATABASE [数据库名];创建一个数据库
4.show tables;查看当前库里的表
5.CREATE TABLE [表名]
([字段名] [类型], [字段名] [类型]);
6.DESCRIBE [表名] ;显示表结构
7.source d:/mysql.sql; 导入sql文件
mysql查询某个库所有表的外键生成删除外键sql
SELECT
CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,' ;')
FROM
information_schema.TABLE_CONSTRAINTS c
WHERE
c.TABLE_SCHEMA='db_rule_dto_test' AND c.CONSTRAINT_TYPE='FOREIGN KEY';
mysql生成某个库清空所有表的sql
SELECT
CONCAT('TRUNCATE TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' ;')
FROM
information_schema.TABLE_CONSTRAINTS c
WHERE
c.TABLE_SCHEMA='db_rule_dto_test';
– 禁用外键约束
SET FOREIGN_KEY_CHECKS = 0
– 启用外键约束
SET FOREIGN_KEY_CHECKS = 1;
由于FOREIGN_KEY_CHECKS是基于session的,当关闭了session重新建立连接,这个变量就会恢复默认值,
也就是开启外键约束,当然我们也可以全局的FOREIGN_KEY_CHECKS变量。
SET GLOBAL FOREIGN_KEY_CHECKS = 0;