List:Internals« Previous MessageNext Message »
From:Haihao Tang Date:October 11 2010 2:25am
Subject:Re: A question of "MySQL external XA and internal XA"
View as plain text  
Thanks Mark. Under your guidance, I even more understood internal XA.
But I still have one quetion:
In crash recovery, mysqld uses the list of committed transactions from
the current binlog to recover. Why not use transaction log to recover
the crashed transaction ? I am not familiar with InnoDB -_-!


2010/10/8 MARK CALLAGHAN <mdcallag@stripped>:
> Internal XA is used to keep the replication binlog and Innodb in sync
> after a crash. In this case the commit protocol is:
> 1) prepare InnoDB (force changes in transaction log to disk, mark
> transaction as "prepared")
> 2) write transaction changes to binlog including XID event
> 3) commit InnoDB (write and force "commit" record to transaction log)
>
> If mysqld crashes after step 2, then the "prepared" InnoDB
> transactions will be committed during crash recovery. In crash
> recovery, mysqld determines the list of committed transactions from
> the current binlog and uses that to determine what to do with
> "prepared" transactions.
>
> The work above requires 3 fsync calls in the normal case. The fsyncs
> done in steps #1 and #3 can be shared across many concurrent
> transactions. The fsync done in step #2 cannot today -- unless you use
> the Google patch. I know that MariaDB is very interested in changing
> that. I suspect that MySQL is as well.
>
> On Thu, Oct 7, 2010 at 7:30 PM, Haihao Tang <haihaot@stripped> wrote:
>> Hi,
>>    I am recently in the study of MySQL XA. In the section
>> "Restrictions on XA Transactions" of MySQL reference 5.1
>> (http://dev.mysql.com/doc/refman/5.1/en/xa-restrictions.html), it
>> wrote:
>>    For “external XA,” a MySQL server acts as a Resource
> Manager and
>> client programs act as Transaction Managers. For “Internal XA”,
>> storage engines within a MySQL server act as RMs, and the server
>> itself acts as a TM.
>>    I understand the "external XA" where MySQL server acts as RM, but
>> the "internal XA" confuse me. How does MySQL server itself act as a TM
>> and storage engine (It could be only InnoDB, right?) act as RM? How
>> does MySQL server manage storage engines to accomplish a DTP? Any
>> examples?
>>    Thank you!
>>
>> Best Regards,
>>
>>                   Robin
>>
>>                   2010-10-8
>>
>> --
>> MySQL Internals Mailing List
>> For list archives: http://lists.mysql.com/internals
>> To unsubscribe:    http://lists.mysql.com/internals?unsub=1
>>
>>
>
>
>
> --
> Mark Callaghan
> mdcallag@stripped
>
Thread
A question of "MySQL external XA and internal XA"Haihao Tang8 Oct
  • Re: A question of "MySQL external XA and internal XA"MARK CALLAGHAN8 Oct
    • Re: A question of "MySQL external XA and internal XA"Haihao Tang11 Oct
      • Re: A question of "MySQL external XA and internal XA"MARK CALLAGHAN11 Oct
        • Re: A question of "MySQL external XA and internal XA"Haihao Tang11 Oct