开发
开发
技术栈:知识点:
mariadb常用命令
- #容器安装mariadb前条件置
- dnf install libaio
- #安装mariadb
- dnf install mariadb-server
- #初始化文件
- mariadb-install-db
- #mariadb初始化设置
- mariadb-secure-installation
- #授权远程访问(淘汰)
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
- #授权远程访问
- RENAME USER 'root'@'localhost' TO 'root'@'%';
- #还原备份文件(数据库存在的情况)
- mariadb -u root -p 数据库名</home/文件名.sql
- #备份
- mariadb-dump -uroot -p lxpwechat>lxpwechat.sql
- #备份 --extended-insert
- mariadb-dump -uroot -p --extended-insert lxpwechat>lxpwechat.sql
- #主从检查
- SHOW SLAVE STATUS
- #缓存设置
- SHOW variables like '%query_cache%'
- #缓存使用情况
- SHOW STATUS LIKE 'Qcache%';
mariadb主从同步Slave_IO_Running:NO/Slave_SQL_Running:NO处理
- #方法一:可手动同步不一致的情况
- STOP SLAVE;
- SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;#跳过当前错误,报错信息可以看到sql语句可以手动处理
- START SLAVE;
- #方法二:Binlog位置不同
- SHOW MASTER STATUS#主库执行
- STOP SLAVE;#故障库执行
- #reset slave#尽量别用,用了以后两个都会是yes,但是很有之前不同布的数据就不同步了
- change master to master_log_file = 'master-bin.000012', master_log_pos=71474;#master-bin.000012和71474来源第一个主库执行
- #完整语法如下,非必须
- #CHANGE MASTER TO
- #MASTER_HOST='master_server_ip',
- #MASTER_USER='replication_user',
- #MASTER_PASSWORD='replication_password',
- #MASTER_PORT=3306, #-- 主库端口
- #MASTER_LOG_FILE='binlog_filename', #-- 主库最新的Binlog文件名
- #MASTER_LOG_POS=log_pos_value; #-- 主库Binlog中的位置
- START SLAVE;
- #方法三:终极解决办法重做同步
- flush tables with read lock;#主库只读
- mysqldump -uroot -p databasename>databasename.sql;#备份主数据库
- mariadb -u root -p 数据库名</home/文件名.sql;#还原到故障数据库
- SHOW MASTER STATUS#主库查询,主数据库查询文件和位置
- STOP SLAVE;#故障库执行
- change master to master_log_file = 'master-bin.000012', master_log_pos=71474;#故障库设置master-bin.000012和71474来源第一个主库执行
- START SLAVE;#故障库同步
- unlock tables#主库执行解锁
mariadb互为主从
- /etc/my.cnf #服务器A
- [mysqld]
- server-id=10
- log-bin=master-bin
- relay-log=relay-bin
- sync-binlog = 1
- binlog-ignore-db = mysql #不同步的数据库名称
- binlog-ignore-db = information_schema #不同步的数据库名称
- character-set-server=utf8mb4
- skip-name-resolve
- auto_increment_increment=2
- auto_increment_offset=1
- expire_logs_days=30
- table_definition_cache = 2000
- slave_net_timeout=3600
- max_connections=3000
- innodb_file_per_table = 1
- performance_schema=ON
- innodb_buffer_pool_size = 4G
- innodb_log_file_size=512M
- performance_schema
- performance_schema_events_waits_history_size=20
- performance_schema_events_waits_history_long_size=15000
- max_allowed_packet=100M
- innodb_lock_wait_timeout=120
- join_buffer_size = 2M
- binlog_cache_size=16M
- query_cache_size=256M
- query_cache_type=1
- expire_logs_days=30
- table_definition_cache = 2000
- slave_net_timeout=3600
- [Service]
- LimitNOFILE=10000
- LimitNPROC=10000
- [client]
- default-character-set=utf8mb4
- /etc/my.cnf #服务器B
- [mysqld]
- server-id=20
- log-bin=master-bin
- relay-log=relay-bin
- sync-binlog = 1
- binlog-ignore-db = mysql #不同步的数据库名称
- binlog-ignore-db = information_schema #不同步的数据库名称
- auto_increment_increment=2
- auto_increment_offset=2
- expire_logs_days=30
- table_definition_cache = 2000
- slave_net_timeout=3600
- max_connections=3000
- innodb_file_per_table = 1
- performance_schema=ON
- innodb_buffer_pool_size = 4G
- innodb_log_file_size=512M
- performance_schema
- performance_schema_events_waits_history_size=20
- performance_schema_events_waits_history_long_size=15000
- max_allowed_packet=100M
- innodb_lock_wait_timeout=120
- join_buffer_size = 2M
- binlog_cache_size=16M
- query_cache_size=256M
- query_cache_type=1
- expire_logs_days=30
- table_definition_cache = 2000
- slave_net_timeout=3600
- [Service]
- LimitNOFILE=10000
- LimitNPROC=10000
- [client]
- default-character-set=utf8mb4
- #两台机器添加
- GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';#创建同步帐号
- flush privileges
- #A机器执行
- SHOW MASTER STATUS
- #B机器执行
- STOP SLAVE;
- CHANGE MASTER TO MASTER_HOST='A机器IP', MASTER_USER='slave刚刚帐号', MASTER_PASSWORD='刚刚的密码', MASTER_PORT=3306, MASTER_LOG_FILE='上一个查询A机器文件名', MASTER_LOG_POS=上一个查询A机器位置;
- START SLAVE;
- #B机器执行
- SHOW MASTER STATUS
- #A机器执行
- STOP SLAVE;
- CHANGE MASTER TO MASTER_HOST='B机器IP', MASTER_USER='slave刚刚帐号', MASTER_PASSWORD='刚刚的密码', MASTER_PORT=3306, MASTER_LOG_FILE='上一个查询B机器文件名', MASTER_LOG_POS=上一个查询B机器位置;
- START SLAVE;