mysql多实例的安装以及主从复制配置

1.mysql多实例的安装1)配置文件# cat /etc/my.cnf.multi[mysqld_multi]mysqld=/usr/bin/mysqld_safe   //mysqld的路径mysqladmin=/usr/bin/mysqladmin //mysqladmin的路径user=root   //使用用户[mysqld1]   //1表示标识第一个数据库实例,如下5项为多实例下必须标识的变量port=3306socket=/var/lib/mysql/mysql.sockdatadir=/var/lib/mysqlpid-file=/var/lib/mysql/mysql.piduser=mysql[mysqld2]port=3307socket=/var/lib/mysql3307/mysql3307.sockdatadir=/var/lib/mysql3307pid-file=/var/lib/mysql3307/mysql3307.piduser=mysql2)配置过程a.建立datadir=/var/lib/mysql3307mkdir -p /var/lib/mysql3307chown mysql:mysql /var/lib/mysql3307b.初始化3307数据库文件mysql_install_db �datadir=/var/lib/mysql3307 �user=mysqlc.多实例的启动通过命令mysqld_multi �config-file=/etc/my.cnf.multi report可以查看多实例的运行状态,结果如下:MySQL server from group: mysqld1 is runningMySQL server from group: mysqld2 not running说明实例1正在运行中,实例2没有运行,此时可以通过:mysqld_multi �config-file=/etc/my.cnf.multi start 2的方式启动实例2,并通过report参数进行查询。关闭实例的命令为:mysqld_multi �config-file=/etc/my.cnf.multi stop 2如果在start和stop的后面不添加实例号码的话,将是对所有实例的操作!要小心!――――――――――――――――――――――――――――――――――――――――――2.mysql主从复制配置1)主从复制原理Mysql的 Replication是一个异步的复制过程,从Master复制到Slave。在Master和Slave实现整个复制过程由三个线程来完成,其中两个线程(Sql线程和IO线程)在Slave端,另外一个线程(IO线程)在 Master端。要实现复制过程,Master必须打开Binary Log功能,复制过程就是Slave从Master端获取mysql-bin.xxxxxx日志然后在自己身上完全顺序的执行日志中所记录的各种操作。2)主从复制过程a.Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;b.Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在Master端的Binary Log文件的名称以及在BinaryLog中的位置;c.Slave的IO线程接受到信息后,将接收到的日志内容依次写入到Slave端的Relay Log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中(下一次Slave请求时用)。d.Slave的SQL线程检测到Relay Log中新增加了内容后,会马上解析该Log文件中的内容成为在 Master端真实执行时候的那些可执行的 Query 语句,并在自身执行这些 Query。-3)主从复制配置实例a.master机器:192.168.100.19 3306,slave机器:192.168.100.22 3306b.分别在master上和slave上创建一个用于复制的数据库repl: create database repl;c.在master的配置文件/etc/my.cnf.multi中的[mysqld1]增加如下配置:server-id=1 //master的id,通常为1log-bin=mysql-bin  //打开Binary Log功能binlog-do-db=repl  //需要同步的数据库,如果没有这个参数,表示通报所有数据库d.在master机上为slave机添加一同步帐号mysql> grant replication slave on *.* to ‘repl’@’192.168.100.22′ identified by ‘repl’;-e.在slave的配置文件/etc/my.cnf.multi中的[mysqld1]增加如下配置:server-id=2  //slave idmaster-host=192.168.100.19  //master ipmaster-user=repl   //连接master的账号master-password=repl  //连接master的密码master-port=3306      //master portmaster-connect-retry=60replicate-do-db=repl   //需要同步的数据库-f.重启mastermysqld_multi �config-file=/etc/my.cnf.multi stop 1mysqld_multi �config-file=/etc/my.cnf.multi start 1用show master status 命令查看如下:mysql> show master status;+――――+―――-+――――�+――――――+| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |+――――+―――-+――――�+――――――+| log.000002 |      626 | repl         |                  |+――――+―――-+――――�+――――――+g.重启slavemysqld_multi �config-file=/etc/my.cnf.multi stop 1mysqld_multi �config-file=/etc/my.cnf.multi start 1用show slave status查看如下:(如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功)mysql> show slave statusG;*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.100.19Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: log.000002Read_Master_Log_Pos: 626Relay_Log_File: mysql-relay-bin.000004Relay_Log_Pos: 229Relay_Master_Log_File: log.000002Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: replReplicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 626Relay_Log_Space: 229Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 01 row in set (0.00 sec)-h.测试在master建一个表并插入数据:mysql> CREATE TABLE `vendors` (->   `vend_id` int(11) NOT NULL auto_increment,->   `vend_name` char(50) NOT NULL,->   `vend_address` char(50) default NULL,->   `vend_city` char(50) default NULL,->   `vend_state` char(5) default NULL,->   `vend_zip` char(10) default NULL,->   `vend_country` char(50) default NULL,->   PRIMARY KEY  (`vend_id`)-> );mysql> insert into vendors values(’1′,’zou’,’tianhe’,’guangzhou’,’cn’,’5100′,’zhongguo’);在slave查看是否有数据:mysql> select * from vendors;+―――+―――�+――――�+―――�+――――+―――-+――――�+| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |+―――+―――�+――――�+―――�+――――+―――-+――――�+|       1 | zou       | tianhe       | guangzhou | cn         | 5100     | zhongguo     |+―――+―――�+――――�+―――�+――――+―――-+――――�+――――――――――――――――――――――――――――――――――――――――――3.mysql配置其他常见的参数说明skip-locking  //避免mysql外部锁定,减少出错几率,增强稳定性skip-name-resolve  //取消DNS的反向解析back_log = 64   //指定MySQL可能的连接数量,该参数指出参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。key_buffer_size = 256M  //用于索引块的缓冲区大小,增加它可得到更好处理的索引max_allowed_packet = 8M  //一个查询语句包的最大尺寸。table_cache = 256K  //所有线程打开表的数量sort_buffer_size = 6Mnet_buffer_length = 256K 通信缓冲区在查询期间被重置到该大小read_buffer_size = 4M  //读查询操作所能使用的缓冲区大小,如果有100个链接,则实际分配缓冲区为100*4=400Mread_rnd_buffer_size = 2Mjoin_buffer_size = 8M  //用于全部联合(join)的缓冲区大小(不是用索引的联结)。缓冲区对2个表间的每个全部联结分配一次缓冲区,当增加索引不可能时,增加该值可得到一个更快的全部联结。(通常得到快速联结的最佳方法是增加索引。)myisam_sort_buffer_size = 64Mquery_cache_size = 8Mmax_connections=2000  //允许同时连接MySQL服务器的客户数量。如果超出该值,MySQL会返回Too many connections错误max_connect_errors=99999  //如果有多于该数量的中断连接,将阻止进一步的连接;如需对该主机进行解禁,执行:FLUSH HOST;thread_cache_size=128thread_concurrency = 8log_slow_queries = slow_queries.log //开启慢查询日志long_query_time = 1  //如果一个查询所用时间大于此时间,slow_queried计数将增加default-character-set=utf8lower_case_table_names=1  //MySQL总使用小写字母进行SQL操作innodb_buffer_pool_size = 3000M //InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小,适当的增加这个参数的大小,可以有效的减少InnoDB类型的表的磁盘I/O 。在一个以 InnoDB 为主的专用数据库服务器上,可以考虑把该参数设置为物理内存大小的 60%-80% 。innodb_additional_mem_pool_size = 50M //这个参数用来设置InnoDB存储的数据目录信息和其它内部数据结构的内存池大小。如果 InnoDB 用光了这个池内的内存,InnoDB开始从操作系统分配内存,并且往MySQL错误日志写警告信息。expire_logs_days = 30  //Binary Log自动删除的天数本文出自孤风颠影|网站运维 网址:http://yunhaozou.org/mysql/206.html.转载请保留.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>