mysql多实例(个人的情况,不是大众的)里面有配置好的脚本+主从复制

时间:2022-06-29 08:38:30
[root@DB-S ~]# ll /usr/local/|grep mysql
lrwxrwxrwx. 1 root root 21 Jun 14 01:52 mysql -> /alidata/server/mysql
#这是脚本免编译的安装的环境(比较复杂)
[root@DB-S /]# tree /data/
/data/
├── 3307
│   └── data
└── 3308
└── data 4 directories, 0 files
[root@DB-S 3307]# find /data -type f -name mysql |xargs chmod 700
[root@DB-S scripts]# ls
mysql_install_db
[root@DB-S scripts]# pwd
/alidata/server/mysql/scripts
[root@DB-S scripts]# ./mysql_install_db --basedir=/alidata/server/mysql --datadir=/data/3307/data --user=mysql
[root@DB-S scripts]# ./mysql_install_db --basedir=/alidata/server/mysql --datadir=/data/3308/data --user=mysql
/usr/local/mysql/bin/mysqld: File '/data/3307/mysql-bin.index' not found (Errcode: 13)
160614 5:46:15 [ERROR] Aborting
#没有权限
root@DB-S data]# chown -R mysql:mysql 330*
[root@DB-S data]# ll
total 8
drwxr-xr-x. 3 mysql mysql 4096 Jun 14 06:03 3307
drwxr-xr-x. 3 mysql mysql 4096 Jun 14 05:48 3308
[root@DB-S 3308]# ./mysql start
+ port=3308
+ echo 3308
3308
+ mysql_user=root
+ CmdPath=/usr/local/mysql/bin
+ mysql_sock=/data/3308/mysql.sock
+ case $1 in
+ function_start_mysql
+ '[' '!' -e /data/3308/mysql.sock ']'
+ printf 'Starting MySQL.....\n'
Starting MySQL.....
+ /bin/bash /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf
[root@DB-S 3308]# netstat -lnutp|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 16239/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 24077/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 24910/mysqld
[root@DB-S 3308]# mysql -uroot -p -S /data/3308/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.40-log MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
关闭不同端口的数据库:
[root@DB-S 3307]# ./mysql stop
3307
Stoping MySQL.....
[root@DB-S 3307]# netstat -lnutp|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 16239/mysqld

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[root@DB-S ~]# ls /data/330*
/data/3307:
data my.cnf mysql mysql_barry3307.err mysql-bin.000001 mysql-bin.index mysqld.pid mysql.sock slow.log /data/3308:
data my.cnf mysql mysql_barry3308.err mysql-bin.000001 mysql-bin.index mysqld.pid mysql.sock slow.log #下面有脚本mysql的内容和my.cnf的内容
[root@DB-S ~]# cat /data/3307/my.cnf
[client]
port = 3307
[mysql]
no-auto-rehash
[mysqld]
user = mysql
port = 3307
basedir = /usr/local/mysql
datadir = /data/3307/data
socket = /data/3307/mysql.sock
open_files_limit = 1024
back_log = 600
max_connections = 800
max_connect_errors = 3000
table_cache = 614
external-locking = FALSE
max_allowed_packet =8M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 100
thread_concurrency = 2
query_cache_size = 2M
query_cache_limit = 1M
query_cache_min_res_unit = 2k
#default_table_type = InnoDB
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 2M
max_heap_table_size = 2M
long_query_time = 1
#log_long_format
log-error = /data/3307/error.log
log-slow-queries = /data/3307/slow.log
pid-file = /data/3307/mysql.pid
log-bin = /data/3307/mysql-bin
relay-log = /data/3307/relay-bin
relay-log-info-file = /data/3307/relay-log.info
binlog_cache_size = 1M
max_binlog_cache_size = 1M
max_binlog_size = 2M
expire_logs_days = 7
key_buffer_size = 16M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 1M
myisam_sort_buffer_size = 1M
myisam_max_sort_file_size = 10G
#myisam_max_extra_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
lower_case_table_names = 1
skip-name-resolve
slave-skip-errors = 1032,1062
replicate-ignore-db=mysql
server-id = 2
innodb_additional_mem_pool_size = 4M
innodb_buffer_pool_size = 32M
innodb_data_file_path = ibdata1:128M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 4M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = 0
[mysqldump]
quick
max_allowed_packet = 2M
[mysqld_safe]
log-error=/data/3307/mysql_barry3307.err
pid-file=/data/3307/mysqld.pid
[root@DB-S ~]# cat /data/3307/mysql
#!/bin/bash
#mysql多实例启动脚本
#init
port=3307
echo $port
mysql_user="root"
#mysql_pwd="" #注意密码
CmdPath="/usr/local/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"
#startup function
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL.....\n"
/bin/bash ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 >/dev/null&
else
printf "MySQL is running......\n"
exit
fi }
#stop function
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped.... \n"
exit
else
printf "Stoping MySQL.....\n"
${CmdPath}/mysqladmin -u ${mysql_user} -S /data/${port}/mysql.sock shutdown
fi #如查有密码加 -p${mysql_pwd} }
#restart function
function_restart_mysql()
{
printf "Restarting MySQL......\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
"start")
function_start_mysql
;;
"stop")
function_stop_mysql
;;
"restart")
function_restart_mysql
;;
*)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

端口3308同上,把3307换成3308就行了!

百度网盘(配好的配置文件):http://pan.baidu.com/s/1bo6MTGV

配置mysql多实例数据库开机自启动:

[root@DB-S 3308]# echo "/data/3307/mysql start" >>/etc/rc.local
[root@DB-S 3308]# echo "/data/3308/mysql start" >>/etc/rc.local
[root@DB-S 3308]# grep "330[7,8]" /etc/rc.
rc.d/ rc.local rc.local.bak rc.sysinit
[root@DB-S 3308]# grep "330[7,8]" /etc/rc.local
/data/3307/mysql start
/data/3308/mysql start
[root@DB-S ~]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff. touch /var/lock/subsys/local
/etc/init.d/mysqld start
/etc/init.d/nginx start
/etc/init.d/php-fpm start
systemctl start vsftpd.service
/data/3307/mysql start
/data/3308/mysql start

为root增加密码:

[root@DB-S ~]# mysqladmin -S /data/3307/mysql.sock -uroot password"3307"
mysqladmin: Unknown command: 'password3307'
[root@DB-S ~]# mysqladmin -S /data/3307/mysql.sock -uroot password "3307"
[root@DB-S ~]# mysql -S /data/3307/mysql.sock #这是无法这样登录
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@DB-S ~]# mysql -S /data/3307/mysql.sock -uroot -p
Enter password: #密码:3307
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.40-log MySQL Community Server (GPL) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

主从复制配置:

[root@DB-S ~]# grep 'server-id' /etc/my.cnf
server-id = 1
#server-id = 2
[root@DB-S ~]# grep 'server-id' /data/3307/my.cnf
server-id = 2
[root@DB-S ~]# sed -i 's/server-id.*/server-id = 3/g' /data/3308/my.cnf
[root@DB-S ~]# grep 'server-id' /data/3308/my.cnf
server-id = 3

创建用于同步的帐号:

[root@DB-S ~]# mysql -uroot -p
mysql> grant replication slave on *.* to 'rep'@'%' identified by "3306";
Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

锁表只读:

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

查看主库状态:

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000017 | 459 | | |#后面的从库复制时是从这个位置开始同步
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

导出数据库数据:

[root@DB-S backup]# /alidata/server/mysql/bin/mysqldump -uroot -p3306 --all-databases|gzip >/server/backup/mysql_bak.`date +%F`.sql.gz
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
[root@DB-S ~]# ls /server/backup/mysql_bak.2016-06-14.sql.gz
/server/backup/mysql_bak.2016-06-14.sql.gz

确保导库期间,数据库没有数据插入,可以再检查下主库状态信息

[root@DB-S ~]# mysql -uroot -p3306 -e "show master status"
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000017 | 459 | | |
+------------------+----------+--------------+------------------+

导库后,解锁主库,恢复可写:

[root@DB-S ~]# mysql -uroot -p3306 -e "unlock tables;"

把主库备份的MySQL数据迁移到从库:

设置server-id值并关闭binlog设置

[root@DB-S ~]# egrep "log-bin|erver-id" /data/3307/my.cnf
#log-bin = /data/3307/mysql-bin
server-id = 2
[root@DB-S ~]# sed -i 's/\(log-bin.*\)/#\1/g' /data/3308/my.cnf
[root@DB-S ~]# egrep "log-bin|erver-id" /data/3308/my.cnf
#log-bin = /data/3308/mysql-bin
server-id = 3
[root@DB-S ~]# service mysqld start
Starting MySQL.. SUCCESS!
[root@DB-S ~]# /data/3307/mysql start
3307
Starting MySQL.....
[root@DB-S ~]# /data/3308/mysql start
[root@DB-S ~]# netstat -lnutp |grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7526/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 8342/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 9155/mysqld

还原主数据库导出的数据备份:

[root@DB-S backup]# ls
mysql_bak.2016-06-14.sql.gz
[root@DB-S backup]# which gzip
/bin/gzip
[root@DB-S backup]# gzip -d mysql_bak.2016-06-14.sql.gz
[root@DB-S backup]# ls
mysql_bak.2016-06-14.sql
[root@DB-S backup]# mysql -uroot -p3307 -S /data/3307/mysql.sock <mysql_bak.2016-06-14.sql
[root@DB-S backup]# mysql -uroot -p3308 -S /data/3308/mysql.sock <mysql_bak.2016-06-14.sql

登录从库配置同步参数:

[root@DB-S backup]# mysql -uroot -p3307 -S /data/3307/mysql.sock <<EOF
> CHANGE MASTER TO
> MASTER_HOST='192.168.1.99',
> MASTER_PORT=3306,
> MASTER_USER='rep',
> MASTER_PASSWORD='3306',
> MASTER_LOG_FILE='mysql-bin.000018',
> MASTER_LOG_POS=107;
> EOF
[root@DB-S backup]# mysql -uroot  -S /data/3308/mysql.sock <<EOF
CHANGE MASTER TO
MASTER_HOST='192.168.1.99',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='3306',
MASTER_LOG_FILE='mysql-bin.000018',
MASTER_LOG_POS=107;
EOF

启动从库同步开关:

[root@DB-S backup]# mysql -uroot -p'3307' -S /data/3307/mysql.sock -e "start slave;"
[root@DB-S backup]# mysql -uroot -S /data/3308/mysql.sock -e "start slave;"
[root@DB-S backup]# mysql -uroot -p3307 -S /data/3307/mysql.sock -e "show slave status\G;"
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.99
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000018
Read_Master_Log_Pos: 107
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000018
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 403
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
[root@DB-S backup]# mysql -uroot -S /data/3308/mysql.sock -e "show slave status\G;"*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.99
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000018
Read_Master_Log_Pos: 107
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000018
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 403
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
判断复制是否搭建成功就看如下IO和SQL两个线程是否显示为Yes状态
Slave_IO_Running:Yes  负责从库去主库读取Binlog日志,并写入从库的中继日志中
Slave_SQL_Runnint:Yes  负责读取并中继日志中Binlog,转换SQL语句后应用到数据库汇总

mysql多实例(个人的情况,不是大众的)里面有配置好的脚本+主从复制的更多相关文章

  1. MySQL多实例部署与优化

    MySQL安装 ##上传MySQL安装包## mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ ###wget -q http://mirrors. ...

  2. MySQL数据库实例参数对比脚本

    如何对比两个MySQL实例的参数情况,生产中常会有这样的需求,最近写了个python脚本,可基本实现该需求. 脚本 #!/usr/bin/python import MySQLdb,sys def f ...

  3. mysql 优化实例之索引创建

    mysql 优化实例之索引创建 优化前: pt-query-degist分析结果: # Query 23: 0.00 QPS, 0.00x concurrency, ID 0x78761E301CC7 ...

  4. mysql多实例的配置和管理

    原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...

  5. MySQL多实例,主从同步

    由于背景原因,所做的主从同步还是要基于MySQL 5.1的版本,主从同步主要是一个数据库读写访问原来的数据库热度过大,需要做到使用从库对读分压. MySQL主从同步介绍     MySQL 支持单双向 ...

  6. Mysql多实例 安装以及配置

    MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的soc ...

  7. 如何在同一台机器上安装多个MySQL的实例

    转自:'http://www.cnblogs.com/shangzekai/p/4375271.html 最近由于工作的需要,需要在同一台机器上搭建两个MySQL的实例,(注:已经存在了一个3306的 ...

  8. Mysql 多实例 &plus;表损坏

    什么是实例? 进程+多个线程+预分配的内存结构 MySQL多实例: 多个进程+多个线程+多个预分配内存结构 多个配置文件: 1)多个端口 2)多个数据目录 3)多个socket文件 ./mysql_i ...

  9. MySQL多实例的环境下,服务器端本地连接到指定实例的问题(sock方式连接)

    涉及到sock连接的问题. 为了测试MySQL的某些个特性,在一个机器上安装了多个MySQL的实例,如下截图,有两个实例,一个端口是8000,一个端口是8001.在使用mysql -uroot -p ...

随机推荐

  1. IP地址的分类

    IPv4 地址的分类:   一,组成   1. 使用32位地址 2. 以点分十进制表示,如172.16.0.0,每一个数字对应于8个二进制的比特串,称为一个位组(octets).如某一台主机的IP地址 ...

  2. oracle表分区【转】

          摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用. 在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以达到几十 ...

  3. AlloyTouch实现下拉刷新

    原文地址:https://github.com/AlloyTeam/AlloyTouch/wiki/Pull-to-refresh 效果展示 扫码体验 你也可以点击这里访问Demo 可以点击这里查看代 ...

  4. CSLA的项目结构(一)

    由于我也是边看边学,在很多概念不是很清晰的情况下,也不好将书中的大段内容全部摘抄过来,所以结合项目源码先分析再总结,就成目前比较可行方案,第一篇先从项目结构入手. 项目源码下载后,主要的功能集中在Co ...

  5. heap&lpar;堆&rpar;和stack(栈)的区别

    heap是堆,stack是栈 stack的空间由操作系统自动分配/释放,heap上的空间手动分配/释放. stack空间有限,heap是很大的*存储区 C中的malloc函数分配的内存空间即在hea ...

  6. java项目中使用guava的工具包的心得

    原文:http://www.   zuidaima.com/blog/3182745969511424.htm 以前只是听过这个工具包,但是真正用的话还是在D75需求中.我要实现把前台传入的list集 ...

  7. ArcGIS API for JavaScript 4&period;3 与ArcGIS Server联动使用【地图服务】

    [前言] 有好些网友问我怎么使用Server发布的地图服务了,其实非常的简单. 我在这里先声明:不提供Server软件,需要的请自行使用互联网搜索资源: 不阐述Server如何发布各各种服务,但是我会 ...

  8. VC&plus;&plus;6&period;0连接MySQL数据库(MySQL API)

    一.MySQL的安装   Mysql的安装去官网下载就可以...最新的是5.7版本..二.VC6.0的设置(1)打开VC6.中选0 工具栏Tools菜单下的Options选项,在Directories ...

  9. 关于docker 意外停止,重新快速启动措施

    1. 我们要重启这个镜像,需要知道这个镜像ID,类似这个: 7079ff99e10ac326726a364348853c0e508cad8ce00ae970f3c800f172a40252 那么你可以 ...

  10. django 补充和中间件

    配置 from django.conf import settings form组件 from django.forms import Formfrom django.forms import fie ...