Mysql5.7---主从搭建----主主搭建---CentOs7下
192.168.0.224   master   mysql5.7.19     k8s1
192.168.0.228   slave      mysql5.7.19     k8s2
 
mysql5.7--主从搭建开始
 
在master上面创建专门用于备份的 用户:
grant replication slave on *.* to 'repl'@'192.168.0.228' identified by 'Repl@123';  flush privileges; commit;
 
GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; 
表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
 
 
修改主服务器master配置文件:
 
编辑my.cnf配置文件,设置跳过密码验证
root#  echo 'skip-grant-tables=1' >> /etc/my.cnf
root#  systemctl restart mysqld.service
# mysql
mysql> update mysql.user set authentication_string = password("Sun@123") where user='root';
mysql> SET PASSWORD = PASSWORD('Sun@123');
mysql> set password for root@localhost = password('Sun@123');  
 
注释掉跳过密码登录的配置#skip-grant-tables=1
root# sed -i 's/skip-grant-tables=1/#skip-grant-tables=1/g' /etc/my.cnf
root# systemctl restart mysqld.service
 
重启MySQL,重新设置一次密码
root# mysql -uroot -pSun@123
mysql> set password for root@localhost = password('Sun@123');
mysql> SET PASSWORD = PASSWORD('Sun@123');
 
创建测试库和测试表
mysql -uroot -pSun@123
 
建表
CREATE TABLE IF NOT EXISTS `am21` (  
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,  
`name` varchar(50) DEFAULT NULL,
`name1` varchar(50) DEFAULT NULL,
`name2` varchar(50) DEFAULT NULL,
`name3` varchar(50) DEFAULT NULL,
`name4` varchar(50) DEFAULT NULL,
`name5` varchar(50) DEFAULT NULL,
`name6` varchar(50) DEFAULT NULL,
`sex` varchar(10) NOT NULL DEFAULT '0',  
INDEX(id) ) ENGINE=innodb  DEFAULT CHARSET=utf8 ;
 
delimietr //
 
创建存储过程
create procedure am27()
begin
declare i int;
set i=1;
while i<1000000 do
insert into am21 (name,name1,name2,name3,name4,name5,name6,sex) values ("zhou","sun1","孙福周2","联想3","谷歌4","百度5","上海6","w91");
set i=i+1;
end while;
end;//
 
delimiter ;
 
调用存储过程
call am27();
 
在master--k8s1--下修改配置文件
echo "log-bin=mysql-bin" >> /etc/my.cnf
echo "server-id=1" >> /etc/my.cnf
 
log-bin = mysql-bin
binlog_format = mixed
server-id=1
read_only=0
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
binlog-do-db=test
auto-increment-increment = 10
auto-increment-offset = 1
 
提示:master---可以注释掉的参数

 

 
重启数据库  service mysqld restart
 
 
 
 
锁定master主数据库,并备份需要同步的数据库
mysql> FLUSH TABLES WITH READ LOCK;
root@k8s1:/opt$ mysqldump --master-data -uroot -psunfuzhou test > test.sql
root@k8s1:/opt$pwd
/opt
 
复制master的备份文件到slave数据库上
root@k8s1:/opt$scp -p test.sql root@192.168.0.228:/opt
 
然后查看A服务器的binary日志位置,记住这个文件名和 位置, 等会在从服务器上会用到
登录主服务器的mysql,查询master的状态
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000009
         Position: 436002368
     Binlog_Do_DB: test
Binlog_Ignore_DB: information_schema,mysql,performance_schema,sys
Executed_Gtid_Set:
1 row in set (0.00 sec)
 
 
主服务器已经做完了, 可以解除锁定了:
MYSQL> unlock tables
 
在slave--k8s2--下修改配置文件
vim /etc/my.cnf
echo "log-bin=mysql-bin" >> /etc/my.cnf
echo "server-id=2" >> /etc/my.cnf
 
log-bin=mysql-bin
binlog_format = mixed
server-id=2
read_only=1
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
relay_log=mysqld-relay-bin
log-slave-updates = ON
 
slave---可以注释掉的参数

 

 
把刚才从master服务器上导出的 hello.sql 导入到 slave的hello数据库中, 如果slave现在没有hello数据库,请先创建一个, 然后再导入
创建数据库:
mysql -uroot -psunfuzhou -e  'create database test'    建立test数据库
mysql -uroot -psunfuzhou -e  'show databases'          检查test数据是否建立成功
 
将刚才master 传到slave的test数据库的备份文件test.sql  导入到slave数据库中,如果你刚才导出了多个数据库, 需要把他们都一一上传导入。
mysql -uroot -psunfuzhou test < /opt/test.sql   
 
开启同步, 在slave服务器上执行:
 
CHANGE MASTER TO
MASTER_HOST='192.168.0.224',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@123',
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=436002368;
 
slave  开启复制线程
start slave  
show master status \G;
 
mysql主主搭建开始
 
检查slave和master 的用户角色权限表
mysql -uroot -psunfuzhou -e "select user,host from mysql.user"
 
在slave上执行,创建用于master远程复制的用户 ,授予复制权限, 注意是master的IP---224
mysq>grant replication slave on *.* to 'repl'@'192.168.0.224' identified by 'Repl@123';  flush privileges; commit; 

 

查看当前主从配置,并保存,开始进行主主配置

 

 
 
 
 
 
查看数据大小的脚本
Mysql ---查看数据库和表大小 
查看mysql数据库大小的四种办法,分别有以下四种:
 
第一种:进去指定schema 数据库(存放了其他的数据库的信息)
 
use information_schema
 
第二种:查询所有数据库的数据文件和索引文件 大小
 
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data_size from information_schema.TABLES;
 
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data_size,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
from information_schema.TABLES;
 
 
 
第三种:查看指定数据库的数据文件和索引文件 的大小,比如说:数据库test
 
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data_size,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
from information_schema.TABLES where table_schema='test';  
 
 
第四种:查看指定数据库的 表 的数据文件和作引文件 大小,比如说:数据库test 中am21表
 
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data_size,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
 from information_schema.TABLES where table_schema='test' and table_name='am21';
 
 
 
综合查询在   5.7不适用   是因为sql_mode未设置
 
SELECT TABLE_SCHEMA, CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),' MB') AS data_size,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables;
GROUP BY TABLE_SCHEMA
ORDER BY data_length DESC;
 
报错如下
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY TABLE_SCHEMA
ORDER BY data_length DESC' at line 1
 
解决办法---  echo "sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"" >> /etc/my.cnf   重启mysql,再次执行
查看sql_mode
mysql -uroot -psunfuzhou -e "SHOW VARIABLES LIKE 'SQL_MODE';"
 
设置sql_mode
临时设置sql_mode
mysql -uroot -psunfuzhou -e "SET  sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION '"
 
全局设置sql_mode
mysql -uroot -psunfuzhou -e "SET global  sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION '"
SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
 
SELECT TABLE_SCHEMA, CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),' MB') AS data_size,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables;
GROUP BY TABLE_SCHEMA
ORDER BY data_length DESC;
 
 
 
 
 
posted on 2017-09-29 18:00  sunfuzhou  阅读(80)  评论(0)    收藏  举报